我们可以向EC2实例添加标签,以帮助我们更好地跟踪结算用户和管理实例。
在ECS中部署容器时有没有办法实现?我希望运行容器能够知道它当前附加了什么标签。
答案 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中显然不可编辑有关。