如何在运行容器中获取AWS Fargate任务实例元数据?

时间:2018-11-02 05:13:18

标签: .net visual-studio amazon-web-services amazon-ecs aws-sdk-net

当任务在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/

1 个答案:

答案 0 :(得分:1)

在AWS Fargate中运行时,您可以使用task metadata endpoint检索有关任务的信息,包括其ARN。