

# Amazon ECS 任务元数据端点版本 2
<a name="task-metadata-endpoint-v2"></a>

**重要**  
任务元数据版本 2 端点不再主动维护。我们建议您更新任务元数据版本 4 端点以获取最新的元数据端点信息。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md)。

从 1.17.0 版[容器代理开始，各种任务元数据和 ](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)Docker 统计数据都可用于那些在 Amazon ECS 容器代理所提供的 HTTP 端点上使用 `awsvpc` 网络模式的任务。

所有属于使用 `awsvpc` 网络模式启动的任务的容器都会收到预定义本地链路地址范围内的一个本地 IPv4 地址。当一个容器查询元数据端点时，Amazon ECS 容器代理会基于该容器的唯一 IP 地址确定容器属于哪个任务，并返回有关该任务的元数据和统计数据。

## 启用任务元数据
<a name="task-metadata-endpoint-v2-enable"></a>

**重要**  
任务元数据版本 2 端点不再主动维护。我们建议您更新任务元数据版本 4 端点以获取最新的元数据端点信息。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md)。

从 1.17.0 版[容器代理开始，各种任务元数据和 ](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)Docker 统计数据都可用于那些在 Amazon ECS 容器代理所提供的 HTTP 端点上使用 `awsvpc` 网络模式的任务。

所有属于使用 `awsvpc` 网络模式启动的任务的容器都会收到预定义本地链路地址范围内的一个本地 IPv4 地址。当一个容器查询元数据端点时，Amazon ECS 容器代理会基于该容器的唯一 IP 地址确定容器属于哪个任务，并返回有关该任务的元数据和统计数据。

### 启用任务元数据
<a name="task-metadata-endpoint-v2-enable"></a>

为以下任务默认启用任务元数据版本 2 功能：
+ 使用 Fargate 且使用平台版本 v1.1.0 或更高版本的任务。有关更多信息，请参阅 [适用于 Amazon ECS 的 Fargate 平台版本](platform-fargate.md)。
+ 使用 EC2 且也使用 `awsvpc` 网络模式，并且在运行至少版本 1.17.0 Amazon ECS 容器代理的 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 资源名称（ARN）或短名称。

`TaskARN`  
容器所属的任务的 Amazon 资源名称（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 来测量时钟精度，并提供容器绑定的时钟误差。有关更多信息，请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》**中的[为您的 Linux 实例设定时间](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"
}
```