当任务在AWS Fargate内部启动时,它具有一个任务ID(GUID),该ID用于Cloudwatch日志,并且可以用作唯一的“运行ID”。我正在将.NET核心应用程序启动到AWS容器中,并希望找到一种编程方式来提取任务ID。
我已参考Amazon ECS Container Metadata File
上的AWS文档但是似乎并没有为Fargate打开代理,因为ECS_CONTAINER_METADATA_FILE环境变量似乎不可用。
我可以从正在运行的容器内部获取任务ID(guid)吗?
已解决-注释:
ECS任务端点提供了所需的信息。您可以从Docker容器中卷曲(或以编程方式拉出)URL http://169.254.170.2/v2/metadata,它将为您提供进行调用的容器的任务元数据。我能够在两个单独的运行容器上对此进行测试,并获取其特定任务的ARN值(每个容器具有唯一的GUID。)
请注意,对于Farpoint,您必须使用端点的v2。
更新11/5/2018
我已经创建了一个名为AwsContainerInspection的.NET标准库,该库有助于从AWS ECS任务元数据端点解析元数据并返回一个类对象。我在代码中使用它来获取任务GUID进行日志记录和其他操作。
GitHub-https://github.com/tgourley/AwsContainerInspection
Nuget-https://www.nuget.org/packages/AwsContainerInspection/