amazon-web-services - 没有必要容器的 AWS ECS 任务
问题描述
我有一个应用程序在 ECS 任务中作为一组容器运行。每个容器处理来自 kinesis 分片的记录。如果有 n 个分片,那么 n 个容器将成为此任务的一部分。每个容器都会处理它的分片,直到它到达“流的末尾”。在那个时间点,容器写入结果并退出。当所有容器退出时,任务完成并且 lambda 处理结果。
我的问题是 ECS 要求我将至少一个容器指定为“基本”。如果基本容器在其他容器完成处理之前完成,则整个任务完成并且所有未完成的容器退出。
有没有办法可以避免将任何容器指定为“必需”?我希望他们完成他们的工作,而不考虑任务中的其他容器在做什么。
解决方案
我最终通过将另一个容器添加到将监视非必要容器状态的任务来解决此问题。
使用此代码可以让我看到其他容器的状态。
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']
这允许您检查其他容器的状态并在准备好时结束任务。
推荐阅读
- facebook - Facebook API - retrieve notifications for my own messages
- python - Shapely's Simplify does not simplify
- flutter - 修改 SVG 文件颤动
- java - Split huge Json objects for saving into database
- python - What's the proper way to check in a Model's save() method if a FileField was committed in Django?
- ag-grid - Exception has occurred: TypeError: Cannot assign to read only property with ag-grid-community cellEditor: 'numericEditor'
- php - 使用 isset() 检查值是否存储在数据库中
- python - How to aggregate data and plot all groups
- mysql - 获取员工以及有多少员工为他们工作
- php - 如何在不保存到文件的情况下以 HTML 格式显示图像