我有一个在ECS任务中作为一组容器运行的应用程序。每个容器处理运动学碎片中的记录。如果有n个碎片,则n个容器将成为此任务的一部分。每个容器都会对其碎片进行处理,直到到达“流的末端”为止。在那个时间点,容器写入结果并退出。当所有容器退出时,任务完成,并且lambda处理结果。
我的问题是ECS要求我至少将一个容器指定为“基本”。如果基本容器在其他容器完成处理之前完成,则整个任务完成,所有不完整的容器退出。
有没有办法避免将任何容器指定为“必需”容器?我希望他们在不考虑任务中其他容器正在做什么的情况下完成工作。
答案 0 :(得分:0)
我最终通过将另一个容器添加到将监视非必需容器状态的任务中来解决了此问题。
使用此代码,我可以查看其他容器的状态。
import requests
import os
import time
uri = os.getenv('ECS_CONTAINER_METADATA_URI')
r = requests.get(uri + '/task')
data = r.json()
status_map = {}
for container in data['Containers']:
status_map[container['Name']] = container['KnownStatus']
这使您可以检查其他容器的状态并在准备就绪时结束任务。