Dot-Net

如何在執行的容器中獲取 AWS Fargate 任務實例元數據?

  • November 5, 2018

當任務在 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。

引用自:https://stackoverflow.com/questions/53112991