【问题标题】:How to get AWS Fargate task instance metadata inside running container?如何在运行的容器中获取 AWS Fargate 任务实例元数据?
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我有两个由 169.254.170.2/v2/metadata 返回的 Web 容器(通过同一服务进行负载平衡)我如何知道哪个容器与发出调用的容器匹配?
  • 实际上,仔细检查后,似乎在返回的 JSON 数据中,同一个容器出现了两次。一个的“KnownStatus”为“RESOURCES_PROVISIONED”,另一个的状态为“RUNNING”。看来这项服务会给我我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多