我在AWS ECS Fargate上有一个任务。我需要从lambda定期触发它(假设每40分钟触发一次)。任务本身正在运行30分钟。该任务在群集而不是服务下运行。
如果现有任务正在运行,我也不想触发任务。因此,需要在lambda中检查是否存在相同的正在运行的任务。
为此,我将必须通过容器名称找到该任务。我看过boto3
库API https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html。它具有一些describe_tasks
和list_tasks
之类的API。但是他们不接受容器名称。
我能做的是:
- 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调用?而且由于我的任务未在任何服务下运行。是否可以查询没有任何服务的任务?