У меня есть задание на AWS ECS Fargate. Мне нужно периодически запускать его (скажем, каждые 40 минут) из лямбды. Само задание выполняется 30 минут. Задача выполняется в кластере, а не в службе.
И я не хочу запускать задачу, если запущена существующая задача. Таким образом, в лямбде необходимо проверить, есть ли одно и то же запущенное задание.
Для этого мне нужно будет найти задачу по имени контейнера. Я посмотрел на boto3
API библиотеки https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html. У него есть некоторые API, такие как describe_tasks
и list_tasks
. Но они не принимают имя контейнера.
Что я могу сделать, это:
- list all running tasks in a cluster by calling `list_tasks` API. It gives me all running tasks' ARN.
- Then I have to call `describe_tasks` by iterating these ARN and search the response to see whether there is one matches the container name.
Это работает, но я ищу более простое решение. Есть ли способ сделать один вызов API? И так как моя задача не работает ни под каким сервисом. Есть ли способ запроса задач, которые не имеют никаких служб?