【发布时间】:2019-04-06 08:51:02
【问题描述】:
当任务在 AWS Fargate 内启动时,它有一个用于 Cloudwatch 日志的任务 ID (guid),可用作唯一的“运行 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 curl(或以编程方式提取),它将为您提供进行调用的容器的任务元数据。我能够在两个单独运行的容器上对此进行测试,并取回它们的特定任务 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/
【问题讨论】:
-
感谢您发布此代码。这正是我想要的一天半。
-
有谁知道是否在 Java SDK(或任何其他 SDK)中实现了提取此元数据?
标签: .net visual-studio amazon-web-services amazon-ecs aws-sdk-net