

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon ECS 任務中繼資料端點第 2 版
<a name="task-metadata-endpoint-v2"></a>

**重要**  
不再積極維護任務中繼資料第 2 版端點。建議您更新任務中繼資料第 4 版端點，以取得最新的中繼資料端點資訊。如需詳細資訊，請參閱[Amazon ECS 任務中繼資料端點第 4 版](task-metadata-endpoint-v4.md)。

從 Amazon ECS 容器代理程式 1.17.0 版開始，在 Amazon ECS 容器代理提供之 HTTP 端點使用 `awsvpc` 網路模式的任務，皆可使用各種任務中繼資料和 [Docker 統計資訊](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

屬於使用 `awsvpc` 網路模式啟動之任務的所有容器都接收預先定義連結本機地址範圍內的本機 IPv4 地址。當容器查詢中繼資料端點時，Amazon ECS 容器代理程式可以根據任務的唯一 IP 地址，判斷容器屬於哪些任務，並傳回該任務的中繼資料和統計資料。

## 啟用任務中繼資料
<a name="task-metadata-endpoint-v2-enable"></a>

**重要**  
不再積極維護任務中繼資料第 2 版端點。建議您更新任務中繼資料第 4 版端點，以取得最新的中繼資料端點資訊。如需詳細資訊，請參閱[Amazon ECS 任務中繼資料端點第 4 版](task-metadata-endpoint-v4.md)。

從 Amazon ECS 容器代理程式 1.17.0 版開始，在 Amazon ECS 容器代理提供之 HTTP 端點使用 `awsvpc` 網路模式的任務，皆可使用各種任務中繼資料和 [Docker 統計資訊](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

屬於使用 `awsvpc` 網路模式啟動之任務的所有容器都接收預先定義連結本機地址範圍內的本機 IPv4 地址。當容器查詢中繼資料端點時，Amazon ECS 容器代理程式可以根據任務的唯一 IP 地址，判斷容器屬於哪些任務，並傳回該任務的中繼資料和統計資料。

### 啟用任務中繼資料
<a name="task-metadata-endpoint-v2-enable"></a>

對於下列項目，預設會啟用任務中繼資料第 2 版功能：
+ 使用 Fargate 且平台版本為 1.1.0 版或更新版本的任務。如需詳細資訊，請參閱[適用於 Amazon ECS 的 Fargate 平台版本](platform-fargate.md)。
+ 使用 EC2 的任務，該任務也會使用 `awsvpc` 網路模式，且在至少執行 Amazon ECS 容器代理程式 1.17.0 版的 Amazon EC2 Linux 基礎結構上啟動，或在至少執行 `1.54.0` 版 Amazon ECS 容器代理程式的 Amazon EC2 Windows 基礎結構上啟動。如需詳細資訊，請參閱[Amazon ECS Linux 容器執行個體管理](manage-linux.md)。

您可以將代理更新為最新版本，以在舊容器執行個體上新增此功能的支援。如需詳細資訊，請參閱[更新 Amazon ECS 容器代理程式](ecs-agent-update.md)。

### 任務中繼資料端點路徑
<a name="task-metadata-endpoint-v2-paths"></a>

容器可使用下列 API 端點：

`169.254.170.2/v2/metadata`  
此端點會傳回任務的中繼資料 JSON，包括與任務相關聯之所有容器的容器 ID 和名稱清單。如需此端點之回應的詳細資訊，請參閱「[任務中繼資料 JSON 回應](#task-metadata-endpoint-v2-response)」。

`169.254.170.2/v2/metadata/<container-id>`  
此端點會傳回指定 Docker 容器 ID 的中繼資料 JSON。

`169.254.170.2/v2/metadata/taskWithTags`  
除了可使用 `ListTagsForResource` API 擷取的任務和容器執行個體標籤之外，此路徑還會傳回包含在 `/task` 端點內的任務的中繼資料。

`169.254.170.2/v2/stats`  
此端點會傳回與任務相關聯之所有容器的 Docker 統計資訊 JSON。如需每個所傳回統計資訊的詳細資訊，請參閱 Docker API 文件中的 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

`169.254.170.2/v2/stats/<container-id>`  
此端點會傳回指定 Docker 容器 ID 的 Docker 統計資訊 JSON。如需每個所傳回統計資訊的詳細資訊，請參閱 Docker API 文件中的 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

### 任務中繼資料 JSON 回應
<a name="task-metadata-endpoint-v2-response"></a>

任務中繼資料端點 (`169.254.170.2/v2/metadata`) JSON 回應會傳回下列資訊。

`Cluster`  
任務所屬 Amazon ECS 叢集的 Amazon Resource Name (ARN) 或簡短名稱。

`TaskARN`  
容器所屬任務的 Amazon Resource Name (ARN)。

`Family`  
任務的 Amazon ECS 任務定義系列。

`Revision`  
任務的 Amazon ECS 任務定義修訂。

`DesiredStatus`  
Amazon ECS 中任務的所需狀態。

`KnownStatus`  
Amazon ECS 中任務的已知狀態。

`Limits`  
在任務層級指定的資源限制，例如 CPU (以 vCPU 表示) 和記憶體。如果未定義資源限制，則會省略此參數。

`PullStartedAt`  
第一個容器映像提取的開始時間戳記。

`PullStoppedAt`  
最後一個容器映像提取的完成時間戳記。

`AvailabilityZone`  
任務所在的可用區域。  
可用區域中繼資料僅適用於使用平台第 1.4 版或更新版本 (Linux) 或 1.0.0 或更新版本 (Windows) 的 Fargate 任務。

`Containers`  
與任務相關聯之每個容器的容器中繼資料清單。    
`DockerId`  
容器的 Docker ID。  
`Name`  
任務定義中指定的容器名稱。  
`DockerName`  
提供給 Docker 的容器名稱。Amazon ECS 容器代理程式會產生容器的唯一名稱，以避免在單一執行個體上執行相同任務定義的多個複本時，發生名稱衝突。  
`Image`  
容器的映像。  
`ImageID`  
映像資訊清單的 SHA-256 摘要。此摘要可用於以 `repository-url/image@sha256:digest` 格式提取映像。  
`Ports`  
向容器開放的任何連接埠。如果未開放連接埠，則會省略此參數。  
`Labels`  
任何套用至容器的標籤。如果未套用標籤，則會省略此參數。  
`DesiredStatus`  
Amazon ECS 中容器的所需狀態。  
`KnownStatus`  
Amazon ECS 中容器的已知狀態。  
`ExitCode`  
容器的結束代碼。如果容器尚未結束，則會省略此參數。  
`Limits`  
在容器層級指定的資源限制，例如 CPU (以 CPU 單位表示) 和記憶體。如果未定義資源限制，則會省略此參數。  
`CreatedAt`  
容器的建立時間戳記。如果尚未建立容器，則會省略此參數。  
`StartedAt`  
容器的啟動時間戳記。如果尚未啟動容器，則會省略此參數。  
`FinishedAt`  
容器的停止時間戳記。如果尚未停止容器，則會省略此參數。  
`Type`  
容器的類型。任務定義中指定的容器類型為 `NORMAL`。您可以忽略其他容器類型，這些是 Amazon ECS 容器代理程式用來佈建內部任務資源的容器類型。  
`Networks`  
容器的網路資訊，例如網路模式和 IP 地址。如果未定義網路資訊，則會省略此參數。

`ClockDrift`  
關於參考時間和系統時間之間差異的資訊。這適用於 Linux 作業系統。此功能使用 Amazon Time Sync Service 來衡量時鐘準確性，並提供容器的時鐘錯誤界限。如需詳細資訊，請參閱 *Amazon EC2 User Guide for Linux instances* 中的 [Set the time for your Linux instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)。    
`ReferenceTime`  
時鐘精確度的基礎。Amazon ECS 透過 NTP 使用世界協調時間 (UTC) 的全球標準，例如 `2021-09-07T16:57:44Z`。  
`ClockErrorBound`  
時鐘誤差的測量值，定義為 UTC 的偏移。此誤差是參考時間和系統時間之間的毫秒差異。  
`ClockSynchronizationStatus`  
指出系統時間和參考時間之間最近的同步嘗試是否成功。  
有效值為 `SYNCHRONIZED` 和 ` NOT_SYNCHRONIZED`。

`ExecutionStoppedAt`  
任務 `DesiredStatus` 移至 `STOPPED` 時的時間戳記。這會在基本容器移至 `STOPPED` 時發生。

### 範例任務中繼資料回應
<a name="task-metadata-endpoint-v2-example-task-metadata-response"></a>

下列為單一容器任務的 JSON 回應。

```
{
  "Cluster": "default",
  "TaskARN": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
  "Family": "nginx",
  "Revision": "5",
  "DesiredStatus": "RUNNING",
  "KnownStatus": "RUNNING",
  "Containers": [
    {
      "DockerId": "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c",
      "Name": "~internal~ecs~pause",
      "DockerName": "ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700",
      "Image": "amazon/amazon-ecs-pause:0.1.0",
      "ImageID": "",
      "Labels": {
        "com.amazonaws.ecs.cluster": "default",
        "com.amazonaws.ecs.container-name": "~internal~ecs~pause",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
        "com.amazonaws.ecs.task-definition-family": "nginx",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RESOURCES_PROVISIONED",
      "KnownStatus": "RESOURCES_PROVISIONED",
      "Limits": {
        "CPU": 0,
        "Memory": 0
      },
      "CreatedAt": "2018-02-01T20:55:08.366329616Z",
      "StartedAt": "2018-02-01T20:55:09.058354915Z",
      "Type": "CNI_PAUSE",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": [
            "10.0.2.106"
          ]
        }
      ]
    },
    {
      "DockerId": "43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946",
      "Name": "nginx-curl",
      "DockerName": "ecs-nginx-5-nginx-curl-ccccb9f49db0dfe0d901",
      "Image": "nrdlngr/nginx-curl",
      "ImageID": "sha256:2e00ae64383cfc865ba0a2ba37f61b50a120d2d9378559dcd458dc0de47bc165",
      "Labels": {
        "com.amazonaws.ecs.cluster": "default",
        "com.amazonaws.ecs.container-name": "nginx-curl",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
        "com.amazonaws.ecs.task-definition-family": "nginx",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RUNNING",
      "KnownStatus": "RUNNING",
      "Limits": {
        "CPU": 512,
        "Memory": 512
      },
      "CreatedAt": "2018-02-01T20:55:10.554941919Z",
      "StartedAt": "2018-02-01T20:55:11.064236631Z",
      "Type": "NORMAL",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": [
            "10.0.2.106"
          ]
        }
      ]
    }
  ],
  "PullStartedAt": "2018-02-01T20:55:09.372495529Z",
  "PullStoppedAt": "2018-02-01T20:55:10.552018345Z",
  "AvailabilityZone": "us-east-2b"
}
```