标记ECS任务的最佳做法?

时间:2017-10-12 15:40:44

标签: amazon-web-services amazon-ecs

我们可以向EC2实例添加标签,以帮助我们更好地跟踪结算用户和管理实例。

在ECS中部署容器时有没有办法实现?我希望运行容器能够知道它当前附加了什么标签。

2 个答案:

答案 0 :(得分:3)

这实际上取决于你最终试图想象的是什么。我将在下面分享一些袖手旁观的想法,也许你可以根据这些想法推断出能够满足你需求的东西。

正如您可能知道的那样,ECS任务本身并不支持标记的概念,但是您可以考虑一些变通方法。例如,根据您记录应用程序行为的方式(例如,将日志批处理到CloudWatch Logs),您可以为每个ECS任务创建一个包含分隔的标记数组的日志流名称。

作为我最近建立的POC的一部分,我使用自动生成的计算机名称来动态创建CloudWatch Log Stream名称。您可以轻松附加或添加嵌入容器映像中的标记数据,然后稍后从CloudWatch Log Streams查询标记信息。

另一种选择是根据ECR中每个唯一任务定义运行的ECS任务的数量,将指标记录到CloudWatch指标。

您可以构建一个非常简单的Lambda函数,在每个集群上查询您的ECS任务,并将每个唯一任务定义的任务计数写入每分钟的CloudWatch指标。 CloudWatch Event Rules允许您按照cron计划触发Lambda函数,因此您可以根据自己的喜好自定义期间。

您可以使用此度量标准数据来帮助推动有关ECS群集,在其上运行的服务和任务以及支持ECS群集的基础EC2计算实例的扩展决策。

希望这有帮助。

答案 1 :(得分:0)

在尝试找出当前情况时就发现了这一点。对于未来的搜索者:我相信在此问题之后的某个时间tagging was added将于2018年底。

我还不确定是否可以在控制台中进行设置,或者仅是API的功能,例如Terraform AWS提供程序现在允许您设置服务任务定义标签以通过propagate_tags“冒泡”到任务(包括Fargate任务)。

我刚刚启用了该功能,但是可以强制使用新的ECS服务–我想这与它在控制台UI中显然不可编辑有关。