7

当任务在 AWS Fargate 内启动时,它有一个用于 Cloudwatch 日志的任务 ID (guid),可用作唯一的“运行 ID”。我正在将 .NET 核心应用程序启动到 AWS 容器中,并希望找到一种编程方式来提取任务 ID。

我参考了关于Amazon ECS 容器元数据文件的 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 任务元数据终端节点的元数据并返回一个类对象。我在我的代码中使用它来获取用于日志记录和其他事情的任务 GUID。

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

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

4

1 回答 1

7

在 AWS Fargate 中运行时,您可以使用任务元数据终端节点来检索有关任务的信息,包括其 ARN。

于 2018-11-02T05:32:08.707 回答