Проблема: у нас есть запланированное задание (AWS Fargate + Lambda + DynamoDB), которое будет выполняться каждый день. Но из-за какой-то проблемы, если контейнер застревает, нам нужно остановить контейнер и снова запустить то же задание.
есть ли способ остановить / приостановить выполнение задачи AWS Fargate?
Вы можете сделать это на консоли или через интерфейс командной строки AWS. Вероятно, вы захотите использовать задачу остановки API для этого. Это требует, чтобы вы сначала взяли идентификатор задачи, перечислив задачи в вашем кластере, и отфильтровали их на основе того, что вам нужно фильтровать (определение задачи, я думаю?).
Вы можете проверить статус задач, остановить и перезапустить их с помощью консоли ECS и создать для этого сценарий.
Не нужно строить дополнительную логику. Вы можете использовать встроенную функцию HEALTHCHECK. Дополнительную информацию можно найти на странице официальной документации.
При создании определения ЗАДАЧИ в разделе контейнера вы увидите Advanced Container Configuration. Здесь вы можете указать следующие атрибуты для HEALTHCHECK:
Таким образом, после указания работоспособности одной линейной команды или скрипта с правильными параметрами проверка работоспособности будет выполняться непрерывно. В зависимости от результата вашей команды HealthCheck, которую вы указали, у вас будет 2 результата после каждой проверки.
Таким образом, после всех последовательных проверок, если контейнер заполнен всеми повторными попытками сбоя, он будет определен как неисправный, затем он будет остановлен и заменен автоматически. Вам не нужен дополнительный контроллер, чекер, тюнер! Просто напишите простую проверку работоспособности, которая действительно показывает, что ваш контейнер исправен.
Другие побочные условия — позаботиться;
Задача должна быть определена в Сервисе.
Проверки работоспособности контейнеров поддерживаются для задач Fargate, если вы используете платформу версии 1.1.0 или новее.
Проверки работоспособности контейнеров не поддерживаются для задач, которые являются частью службы, настроенной для использования классического балансировщика нагрузки.