タスクが AWS Fargate 内で起動すると、Cloudwatch ログに使用されるタスク ID (guid) があり、一意の「実行 ID」として使用できます。AWS コンテナで .NET コア アプリケーションを起動しており、タスク ID をプルするプログラムによる方法を見つけたいと考えています。
Amazon ECS Container Metadata Fileに関する AWS ドキュメントを参照しました。
しかし、ECS_CONTAINER_METADATA_FILE 環境変数が使用できないように見えるため、Fargate に対してエージェントがオンになっているようには見えません。
実行中のコンテナー内からタスク ID (guid) を取得する方法はありますか?
解決済み - 注:
ECS タスク エンドポイントは、必要な情報を提供しました。Docker コンテナー内から、URL http://169.254.170.2/v2/metadataから curl (またはプログラムでプル) すると、呼び出しを行うコンテナーのタスク メタデータが提供されます。これを 2 つの別々の実行中のコンテナーでテストすることができ、特定のタスク ARN 値 (各コンテナーの一意の GUID) を取得しました。
Farpoint の場合、エンドポイントの v2 を使用する必要があることに注意してください。
2018 年 11 月 5 日更新
AWS ECS タスク メタデータ エンドポイントからのメタデータの解析を容易にし、クラス オブジェクトを返す AwsContainerInspection という .NET 標準ライブラリを作成しました。コードでこれを使用して、ログなどのタスク GUID を取得します。
GitHub - https://github.com/tgourley/AwsContainerInspection
Nuget - https://www.nuget.org/packages/AwsContainerInspection/