当任务在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容器中 curl (或以编程方式拉出)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/
最佳答案
在AWS Fargate中运行时,您可以使用task metadata endpoint检索有关任务的信息,包括其ARN。
关于.net - 如何在正在运行的容器中获取AWS Fargate任务实例元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112991/