Dot-Net
如何在執行的容器中獲取 AWS Fargate 任務實例元數據?
當任務在 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/
在 AWS Fargate 中執行時,您可以使用任務元數據終端節點來檢索有關任務的資訊,包括其 ARN。