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

How to get AWS Fargate task instance metadata inside running container?

当任务在 AWS Fargate 内部启动时,它有一个用于 Cloudwatch 日志的任务 ID (guid),可用作唯一 "run 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。

2018 年 11 月 5 日更新

我创建了一个名为 AwsContainerInspection 的 .NET 标准库,它有助于解析来自 AWS ECS 任务元数据端点的元数据和 returns 一个 class 对象。我在我的代码中使用它来获取用于日志记录和其他事情的任务 GUID。

GitHub - https://github.com/tgourley/AwsContainerInspection

Nuget - https://www.nuget.org/packages/AwsContainerInspection/

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