Я хочу обновить минимальное и максимальное количество задач для службы в ECS в лямбда-функции (python с boto3). Похоже, что самое близкое - это желаемое количество: desiredCount
, но я не думаю, что это то, что мне нужно, так как моя политика автоматического масштабирования все равно это изменит.
Еще немного о моем варианте использования.
У меня есть несколько контейнеров на ECS, которые опрашивают очередь на предмет заданий, и мне нужно, чтобы некоторое количество из них всегда работало в рабочее время, но ни у одного из них не закончилось рабочее время. Когда в систему поступает нагрузка, моя политика автоматического масштабирования будет масштабировать контейнеры, но пользователю придется дольше ждать, чтобы это произошло, когда контейнеров нет, поэтому я хочу, чтобы некоторые из них всегда были включены в рабочее время.
Я также использую AWS Fargate.
Думаю, вам придется сделать это за 2 шага, используя автоматическое масштабирование приложения клиент boto3:
Создайте службу ECS в качестве целевого объекта автоматического масштабирования приложения с помощью register_scalable_target()
например, с MinCapacity=3
и MaxCapacity=100
. Этот вызов вернет масштабируемый целевой ARN.
Каждый вечер звонить register_scalable_target()
снова с MinCapacity=0
и каждое утро рабочего дня снова с MinCapacity=3
.
Увидеть register_scalable_target()
документация, где прямо говорится:
После регистрации масштабируемой цели вы можете использовать эту операцию для обновить минимум и максимум значения для его масштабируемого измерения.
После этого ваша политика автоматического масштабирования установит DesiredCapacity
в пределах Мин. / Макс. границы, где MinCapacity изменится с 0
к 3
в рабочее время и обратно в 0
в нерабочее время.
Надеюсь, это поможет :)