

# 任务元数据可用于 EC2 上的 Amazon ECS 任务
<a name="ec2-metadata"></a>

Amazon ECS 容器代理提供了检索各种任务元数据和 [Docker 统计数据](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)的方法。这称为任务元数据端点。提供了以下版本：
+ 任务元数据端点版本 4 — 为容器提供各种元数据和 Docker 统计信息。还可以提供网络速率数据。可用于在运行至少 `1.39.0` 版本的 Amazon ECS 容器代理的Amazon EC2 Linux 实例上启动的 Amazon ECS 任务。对于使用 `awsvpc` 网络模式的 Amazon EC2 Windows 实例，Amazon ECS 容器代理的版本必须至少为 `1.54.0`。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md)。
+ 任务元数据端点版本 3 — 为容器提供各种元数据和 Docker 统计信息。可用于在运行至少 `1.21.0` 版本的 Amazon ECS 容器代理的Amazon EC2 Linux 实例上启动的 Amazon ECS 任务。对于使用 `awsvpc` 网络模式的 Amazon EC2 Windows 实例，Amazon ECS 容器代理的版本必须至少为 `1.54.0`。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 3](task-metadata-endpoint-v3.md)。
+ 任务元数据端点版本 2–可用于在运行至少版本 `1.17.0` 的 Amazon ECS 容器代理的 Amazon EC2 Linux实例上启动的 Amazon ECS 任务。对于使用 `awsvpc` 网络模式的 Amazon EC2 Windows 实例，Amazon ECS 容器代理的版本必须至少为 `1.54.0`。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 2](task-metadata-endpoint-v2.md)。

 如果您的 Amazon ECS 任务托管在 Amazon EC2 上，或者如果您的任务使用 `host` 网络模式并托管在 Amazon ECS 托管实例上，您也可以使用[实例元数据服务（IMDS）端点](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)访问任务主机元数据。以下命令在托管任务的实例中运行时，会列出主机实例的 ID。

```
 curl http://169.254.169.254/latest/meta-data/instance-id
```

如果您的 Amazon ECS 任务托管在 Amazon EC2 上并采用仅 IPv6 配置，则可以使用 IPv6 IMDS 端点访问任务主机元数据。从托管任务的实例中运行以下命令时，会列出 IPv6 上主机实例的 ID。

```
 curl http://[fd00:ec2::254]/latest/meta-data/instance-id
```

要访问 IPv6 IMDS 端点，请在容器实例上启用 IPv6 IMDS 端点，并使用所选 SDK 的 IMDS 凭证提供程序将元数据服务端点模式配置为 `IPv6`。有关为容器实例启用 IPv6 IMDS 端点的更多信息，请参阅《Amazon EC2 用户指南》**中的[配置实例元数据服务选项](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)。有关 SDK 的 IMDS 凭证提供程序的更多信息，请参阅《AWS SDK 和工具参考指南》**中的 [IMDS 凭证提供程序](https://docs.aws.amazon.com/sdkref/latest/guide/feature-imds-credentials.html)。

**注意**  
启用 `awsvpcTrunking` 账户设置后，将无法访问 IPv6 IMDS 端点。要在启用 `awsvpcTrunking` 时访问容器实例 IAM 角色凭证，您可以改用任务 IAM 角色。有关任务 IAM 角色的更多信息，请参阅[Amazon ECS 任务 IAM 角色](task-iam-roles.md)。

 您可以从端点获取的信息分为几个类别，例如 `instance-id`。有关您可以使用端点获取的不同类别的主机实例元数据的更多信息，请参阅[实例元数据类别](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories)。

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

Amazon ECS 容器代理会向每个容器注入一个环境变量，称为*任务元数据端点*，它提供了各种任务元数据和 [Docker 统计信息](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)添加到容器中。

任务元数据和联网速率统计数据将发送到 CloudWatch 容器洞察，并可在 AWS 管理控制台 中查看。有关更多信息，请参阅 [使用具有增强型可观测性的 Container Insights 监控 Amazon ECS 容器](cloudwatch-container-insights.md)。

**注意**  
Amazon ECS 提供较早版本的任务元数据端点。为避免将来需要创建新的任务元数据端点版本，可能会将其他元数据添加到版本 4 输出中。我们不会删除任何现有元数据或更改元数据字段名称。

原定设置情况下，环境变量会注入到运行至少版本的 Amazon EC2 Linux 实例上启动的 Amazon ECS 任务的容器中 `1.39.0` 的 Amazon ECS 容器代理。对于使用 `awsvpc` 网络模式的 Amazon EC2 Windows 实例，Amazon ECS 容器代理的版本必须至少为 `1.54.0`。有关更多信息，请参阅 [Amazon ECS Linux 容器实例管理](manage-linux.md)。

**注意**  
通过将代理更新为最新版本，您可以使用较旧版本的 Amazon ECS 容器代理在 Amazon EC2 实例上添加对此功能的支持。有关更多信息，请参阅 [更新 Amazon ECS 容器代理](ecs-agent-update.md)。

有关任务元数据示例输出，请参阅 [Amazon ECS 任务元数据 v4 示例](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4-examples.html)。

## 任务元数据端点版本 4 路径
<a name="task-metadata-endpoint-v4-paths"></a>

以下任务元数据端点路径可用于容器：

`${ECS_CONTAINER_METADATA_URI_V4}`  
此路径返回容器的元数据。

`${ECS_CONTAINER_METADATA_URI_V4}/task`  
此路径返回任务的元数据，包括与任务相关的所有容器的 ID 和名称列表。有关此端点响应的更多信息，请参阅[Amazon ECS 任务元数据 V4 JSON 响应](task-metadata-endpoint-v4-response.md)。

`${ECS_CONTAINER_METADATA_URI_V4}/taskWithTags`  
除了可以使用 `ListTagsForResource` API 检索的任务和容器实例标记外，此路径还返回 `/task` 端点中包含的任务的元数据。检索标记元数据时收到的任何错误都将包含在 `Errors` 字段中的值。  
`Errors` 字段仅位于运行至少一个版本 `1.50.0` 的容器代理的 Amazon EC2 Linux 实例上托管的任务的响应中。对于使用 `awsvpc` 网络模式的 Amazon EC2 Windows 实例，Amazon ECS 容器代理必须至少为版本 `1.54.0`  
这端点需要 `ecs.ListTagsForResource` 权限。
使用 `${ECS_CONTAINER_METADATA_URI_V4}/taskWithTags` 端点时，请注意，每次调用最多向 `ecs:ListTagsForResource` 发出两个 API 请求（一个用于容器实例标签，一个用于任务标签），并且任务中的 Sidecar 容器可以代表您进行这些调用。频繁的端点调用可能会导致 API 节流。  
考虑实施缓存或批处理策略来降低调用频率，尤其是在高流量应用程序中，并使用 AWS CloudTrail 调试 API 节流问题。有关 `ListTagsForResource` API 节流限制的信息，请参阅《Amazon Elastic Container Service API 参考》**中的[请求对 Amazon ECS API 进行节流](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/request-throttling.html)。有关使用 AWS CloudTrail 调试 Amazon ECS API 调用的更多信息，请参阅[使用 AWS CloudTrail 记录 Amazon ECS API 调用](logging-using-cloudtrail.md)。

`${ECS_CONTAINER_METADATA_URI_V4}/stats`  
此路径返回特定容器的 Docker 统计信息。有关每个返回的统计信息的更多信息，请参阅 Docker API 文档中的 [ContainerStats](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)。  
对于使用 `awsvpc` 或 `bridge` 版本托管在运行至少版本 `1.43.0` 的容器代理的Amazon EC2 Linux 实例上的或网络模式的Amazon ECS任务，响应中将包含其他网络速率统计信息。对于所有其他任务，响应将仅包含累积网络统计信息。

`${ECS_CONTAINER_METADATA_URI_V4}/task/stats`  
此路径返回与任务相关的所有容器的 Docker 统计数据 。附加容器可以使用此路径提取网络指标。有关每个返回的统计信息的更多信息，请参阅 Docker API 文档中的 [ContainerStats](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)。  
对于使用 `awsvpc` 或 `bridge` 版本托管在运行至少版本 `1.43.0` 的容器代理的Amazon EC2 Linux 实例上的或网络模式的Amazon ECS任务，响应中将包含其他网络速率统计信息。对于所有其他任务，响应将仅包含累积网络统计信息。

# Amazon ECS 任务元数据 V4 JSON 响应
<a name="task-metadata-endpoint-v4-response"></a>

以下信息返回自任务元数据端点（`${ECS_CONTAINER_METADATA_URI_V4}/task`）JSON 响应。除了任务中每个容器的元数据外，还包括与任务关联的元数据。

`Cluster`  
任务所属的 Amazon ECS 集群的 Amazon 资源名称（ARN）或短名称。

`ServiceName`  
任务所属服务的名称。如果任务与服务相关联，则 Amazon EC2 和 Amazon ECS Anywhere 容器实例将显示 ServiceName。  
仅在使用 Amazon ECS 容器代理版本 `1.63.1` 或更高版本时包含 `ServiceName` 元数据。

`VPCID`  
Amazon EC2 容器实例的 VPC ID。此字段仅针对 Amazon EC2 实例显示。  
仅在使用 Amazon ECS 容器代理版本 `1.63.1` 或更高版本时包含 `VPCID` 元数据。

`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 任务。

`LaunchType`  
任务使用的启动类型。使用集群容量提供程序时，这表明任务使用的是 Fargate 还是 EC2 基础设施。  
仅在使用 Amazon ECS Linux 容器代理版本 `1.45.0` 或更高版本（Linux）或者 1.0.0 或更高版本（Windows）时将该 `LaunchType` 元数据包含在内。

`Containers`  
与任务关联的每个容器的容器元数据列表。    
`DockerId`  
容器的 Docker ID。  
当您使用 Fargate 时，id 是一个 32 位十六进制，后面是 10 位数字。  
`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 容器代理用来进行内部任务资源预配置的容器类型。  
`LogDriver`  
容器使用的日志驱动程序。  
该 `LogDriver` 元数据仅在使用Amazon ECS Linux 容器代理版本时包含 `1.45.0` 或更高版本。  
`LogOptions`  
为容器定义的日志驱动程序选项。  
该 `LogOptions` 元数据仅在使用Amazon ECS Linux 容器代理版本时包含 `1.45.0` 或更高版本。  
`ContainerARN`  
容器的 Amazon 资源名称（ARN）。  
该 `ContainerARN` 元数据仅在使用Amazon ECS Linux 容器代理版本时包含 `1.45.0` 或更高版本。  
`Networks`  
容器的网络信息，如网络模式和 IP 地址。如果未定义网络信息，则省略此参数。  
`RestartCount`  
容器已重启的次数。  
仅当为容器启用了重启策略时，才会包含 `RestartCount` 元数据。有关更多信息，请参阅 [使用容器重启策略重启 Amazon ECS 任务中的单个容器](container-restart-policy.md)。

`ExecutionStoppedAt`  
任务的 `DesiredStatus` 变为 `STOPPED` 时的时间戳。这将发生在关键容器变成 `STOPPED` 时。

# Amazon ECS 任务元数据 v4 示例
<a name="task-metadata-endpoint-v4-examples"></a>

以下示例显示了每个任务元数据端点的输出示例。

## 容器元数据响应示例
<a name="task-metadata-endpoint-v4-example-container-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}` 端点时，仅返回有关容器本身的元数据。下面是作为服务（MyService）的一部分运行的任务的示例输出。

```
{
    "DockerId": "ea32192c8553fbff06c9340478a2ff089b2bb5646fb718b4ee206641c9086d66",
    "Name": "curl",
    "DockerName": "ecs-curltest-24-curl-cca48e8dcadd97805600",
    "Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
    "ImageID": "sha256:d691691e9652791a60114e67b365688d20d19940dde7c4736ea30e660d8d3553",
    "Labels": {
        "com.amazonaws.ecs.cluster": "default",
        "com.amazonaws.ecs.container-name": "curl",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/8f03e41243824aea923aca126495f665",
        "com.amazonaws.ecs.task-definition-family": "curltest",
        "com.amazonaws.ecs.task-definition-version": "24"
    },
    "DesiredStatus": "RUNNING",
    "KnownStatus": "RUNNING",
    "Limits": {
        "CPU": 10,
        "Memory": 128
    },
    "CreatedAt": "2020-10-02T00:15:07.620912337Z",
    "StartedAt": "2020-10-02T00:15:08.062559351Z",
    "Type": "NORMAL",
    "LogDriver": "awslogs",
    "LogOptions": {
        "awslogs-create-group": "true",
        "awslogs-group": "/ecs/metadata",
        "awslogs-region": "us-west-2",
        "awslogs-stream": "ecs/curl/8f03e41243824aea923aca126495f665"
    },
    "ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/0206b271-b33f-47ab-86c6-a0ba208a70a9",
    "Networks": [
        {
            "NetworkMode": "awsvpc",
            "IPv4Addresses": [
                "10.0.2.100"
            ],
            "AttachmentIndex": 0,
            "MACAddress": "0e:9e:32:c7:48:85",
            "IPv4SubnetCIDRBlock": "10.0.2.0/24",
            "PrivateDNSName": "ip-10-0-2-100.us-west-2.compute.internal",
            "SubnetGatewayIpv4Address": "10.0.2.1/24"
        }
    ]
}
```

## 任务元数据响应示例
<a name="task-metadata-endpoint-v4-example-task-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}/task` 端点时，除了任务中每个容器的元数据外，还会返回有关该容器的任务元数据。下面是一个示例输出。

```
{
    "Cluster": "default",
    "TaskARN": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
    "Family": "curltest",
    "ServiceName": "MyService",
    "Revision": "26",
    "DesiredStatus": "RUNNING",
    "KnownStatus": "RUNNING",
    "PullStartedAt": "2020-10-02T00:43:06.202617438Z",
    "PullStoppedAt": "2020-10-02T00:43:06.31288465Z",
    "AvailabilityZone": "us-west-2d",
    "VPCID": "vpc-1234567890abcdef0",
    "LaunchType": "EC2",
    "Containers": [
        {
            "DockerId": "598cba581fe3f939459eaba1e071d5c93bb2c49b7d1ba7db6bb19deeb70d8e38",
            "Name": "~internal~ecs~pause",
            "DockerName": "ecs-curltest-26-internalecspause-e292d586b6f9dade4a00",
            "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-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RESOURCES_PROVISIONED",
            "KnownStatus": "RESOURCES_PROVISIONED",
            "Limits": {
                "CPU": 0,
                "Memory": 0
            },
            "CreatedAt": "2020-10-02T00:43:05.602352471Z",
            "StartedAt": "2020-10-02T00:43:06.076707576Z",
            "Type": "CNI_PAUSE",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        },
        {
            "DockerId": "ee08638adaaf009d78c248913f629e38299471d45fe7dc944d1039077e3424ca",
            "Name": "curl",
            "DockerName": "ecs-curltest-26-curl-a0e7dba5aca6d8cb2e00",
            "Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
            "ImageID": "sha256:d691691e9652791a60114e67b365688d20d19940dde7c4736ea30e660d8d3553",
            "Labels": {
                "com.amazonaws.ecs.cluster": "default",
                "com.amazonaws.ecs.container-name": "curl",
                "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RUNNING",
            "KnownStatus": "RUNNING",
            "Limits": {
                "CPU": 10,
                "Memory": 128
            },
            "CreatedAt": "2020-10-02T00:43:06.326590752Z",
            "StartedAt": "2020-10-02T00:43:06.767535449Z",
            "Type": "NORMAL",
            "LogDriver": "awslogs",
            "LogOptions": {
                "awslogs-create-group": "true",
                "awslogs-group": "/ecs/metadata",
                "awslogs-region": "us-west-2",
                "awslogs-stream": "ecs/curl/158d1c8083dd49d6b527399fd6414f5c"
            },
            "ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/abb51bdd-11b4-467f-8f6c-adcfe1fe059d",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        }
    ]
}
```

## 带标签元数据响应的示例任务
<a name="task-metadata-endpoint-v4-example-taskwithtags-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}/taskWithTags` 端点时，将返回有关任务的元数据，包括任务和容器实例标记。下面是一个示例输出。

```
{
    "Cluster": "default",
    "TaskARN": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
    "Family": "curltest",
    "ServiceName": "MyService",
    "Revision": "26",
    "DesiredStatus": "RUNNING",
    "KnownStatus": "RUNNING",
    "PullStartedAt": "2020-10-02T00:43:06.202617438Z",
    "PullStoppedAt": "2020-10-02T00:43:06.31288465Z",
    "AvailabilityZone": "us-west-2d",
    "VPCID": "vpc-1234567890abcdef0",
    "TaskTags": {
        "tag-use": "task-metadata-endpoint-test"
    },
    "ContainerInstanceTags":{
        "tag_key":"tag_value"
    },
    "LaunchType": "EC2",
    "Containers": [
        {
            "DockerId": "598cba581fe3f939459eaba1e071d5c93bb2c49b7d1ba7db6bb19deeb70d8e38",
            "Name": "~internal~ecs~pause",
            "DockerName": "ecs-curltest-26-internalecspause-e292d586b6f9dade4a00",
            "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-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RESOURCES_PROVISIONED",
            "KnownStatus": "RESOURCES_PROVISIONED",
            "Limits": {
                "CPU": 0,
                "Memory": 0
            },
            "CreatedAt": "2020-10-02T00:43:05.602352471Z",
            "StartedAt": "2020-10-02T00:43:06.076707576Z",
            "Type": "CNI_PAUSE",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        },
        {
            "DockerId": "ee08638adaaf009d78c248913f629e38299471d45fe7dc944d1039077e3424ca",
            "Name": "curl",
            "DockerName": "ecs-curltest-26-curl-a0e7dba5aca6d8cb2e00",
            "Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
            "ImageID": "sha256:d691691e9652791a60114e67b365688d20d19940dde7c4736ea30e660d8d3553",
            "Labels": {
                "com.amazonaws.ecs.cluster": "default",
                "com.amazonaws.ecs.container-name": "curl",
                "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RUNNING",
            "KnownStatus": "RUNNING",
            "Limits": {
                "CPU": 10,
                "Memory": 128
            },
            "CreatedAt": "2020-10-02T00:43:06.326590752Z",
            "StartedAt": "2020-10-02T00:43:06.767535449Z",
            "Type": "NORMAL",
            "LogDriver": "awslogs",
            "LogOptions": {
                "awslogs-create-group": "true",
                "awslogs-group": "/ecs/metadata",
                "awslogs-region": "us-west-2",
                "awslogs-stream": "ecs/curl/158d1c8083dd49d6b527399fd6414f5c"
            },
            "ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/abb51bdd-11b4-467f-8f6c-adcfe1fe059d",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        }
    ]
}
```

## 带有错误元数据响应标签的示例任务
<a name="task-metadata-endpoint-v4-example-taskwithtags-error-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}/taskWithTags` 端点时，将返回有关任务的元数据，包括任务和容器实例标记。如果检索标记数据时出错，则响应中返回错误。以下是与容器实例关联的IAM角色没有允许的 `ecs:ListTagsForResource` 权限时的输出示例。

```
{
    "Cluster": "default",
    "TaskARN": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
    "Family": "curltest",
    "ServiceName": "MyService",
    "Revision": "26",
    "DesiredStatus": "RUNNING",
    "KnownStatus": "RUNNING",
    "PullStartedAt": "2020-10-02T00:43:06.202617438Z",
    "PullStoppedAt": "2020-10-02T00:43:06.31288465Z",
    "AvailabilityZone": "us-west-2d",
    "VPCID": "vpc-1234567890abcdef0",
    "Errors": [
        {
            "ErrorField": "ContainerInstanceTags",
            "ErrorCode": "AccessDeniedException",
            "ErrorMessage": "User: arn:aws:sts::111122223333:assumed-role/ecsInstanceRole/i-0744a608689EXAMPLE is not authorized to perform: ecs:ListTagsForResource on resource: arn:aws:ecs:us-west-2:111122223333:container-instance/default/2dd1b186f39845a584488d2ef155c131",
            "StatusCode": 400,
            "RequestId": "cd597ef0-272b-4643-9bd2-1de469870fa6",
            "ResourceARN": "arn:aws:ecs:us-west-2:111122223333:container-instance/default/2dd1b186f39845a584488d2ef155c131"
        },
        {
            "ErrorField": "TaskTags",
            "ErrorCode": "AccessDeniedException",
            "ErrorMessage": "User: arn:aws:sts::111122223333:assumed-role/ecsInstanceRole/i-0744a608689EXAMPLE is not authorized to perform: ecs:ListTagsForResource on resource: arn:aws:ecs:us-west-2:111122223333:task/default/9ef30e4b7aa44d0db562749cff4983f3",
            "StatusCode": 400,
            "RequestId": "862c5986-6cd2-4aa6-87cc-70be395531e1",
            "ResourceARN": "arn:aws:ecs:us-west-2:111122223333:task/default/9ef30e4b7aa44d0db562749cff4983f3"
        }
    ],
    "LaunchType": "EC2",
    "Containers": [
        {
            "DockerId": "598cba581fe3f939459eaba1e071d5c93bb2c49b7d1ba7db6bb19deeb70d8e38",
            "Name": "~internal~ecs~pause",
            "DockerName": "ecs-curltest-26-internalecspause-e292d586b6f9dade4a00",
            "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-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RESOURCES_PROVISIONED",
            "KnownStatus": "RESOURCES_PROVISIONED",
            "Limits": {
                "CPU": 0,
                "Memory": 0
            },
            "CreatedAt": "2020-10-02T00:43:05.602352471Z",
            "StartedAt": "2020-10-02T00:43:06.076707576Z",
            "Type": "CNI_PAUSE",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        },
        {
            "DockerId": "ee08638adaaf009d78c248913f629e38299471d45fe7dc944d1039077e3424ca",
            "Name": "curl",
            "DockerName": "ecs-curltest-26-curl-a0e7dba5aca6d8cb2e00",
            "Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
            "ImageID": "sha256:d691691e9652791a60114e67b365688d20d19940dde7c4736ea30e660d8d3553",
            "Labels": {
                "com.amazonaws.ecs.cluster": "default",
                "com.amazonaws.ecs.container-name": "curl",
                "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c",
                "com.amazonaws.ecs.task-definition-family": "curltest",
                "com.amazonaws.ecs.task-definition-version": "26"
            },
            "DesiredStatus": "RUNNING",
            "KnownStatus": "RUNNING",
            "Limits": {
                "CPU": 10,
                "Memory": 128
            },
            "CreatedAt": "2020-10-02T00:43:06.326590752Z",
            "StartedAt": "2020-10-02T00:43:06.767535449Z",
            "Type": "NORMAL",
            "LogDriver": "awslogs",
            "LogOptions": {
                "awslogs-create-group": "true",
                "awslogs-group": "/ecs/metadata",
                "awslogs-region": "us-west-2",
                "awslogs-stream": "ecs/curl/158d1c8083dd49d6b527399fd6414f5c"
            },
            "ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/abb51bdd-11b4-467f-8f6c-adcfe1fe059d",
            "Networks": [
                {
                    "NetworkMode": "awsvpc",
                    "IPv4Addresses": [
                        "10.0.2.61"
                    ],
                    "AttachmentIndex": 0,
                    "MACAddress": "0e:10:e2:01:bd:91",
                    "IPv4SubnetCIDRBlock": "10.0.2.0/24",
                    "PrivateDNSName": "ip-10-0-2-61.us-west-2.compute.internal",
                    "SubnetGatewayIpv4Address": "10.0.2.1/24"
                }
            ]
        }
    ]
}
```

## 容器统计响应示例
<a name="task-metadata-endpoint-v4-example-stats-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}/stats` 端点时，将返回容器的网络指标。对于使用 `awsvpc` 或 `bridge` 版本托管在运行至少版本 `1.43.0` 的容器代理的Amazon EC2实例上的或网络模式的Amazon ECS任务，响应中将包含其他网络速率统计信息。对于所有其他任务，响应将仅包含累积网络统计信息。

以下是 Amazon EC2 上使用 `bridge` 网络模式的 Amazon ECS 任务的输出示例。

```
{
    "read": "2020-10-02T00:51:13.410254284Z",
    "preread": "2020-10-02T00:51:12.406202398Z",
    "pids_stats": {
        "current": 3
    },
    "blkio_stats": {
        "io_service_bytes_recursive": [
            
        ],
        "io_serviced_recursive": [
            
        ],
        "io_queue_recursive": [
            
        ],
        "io_service_time_recursive": [
            
        ],
        "io_wait_time_recursive": [
            
        ],
        "io_merged_recursive": [
            
        ],
        "io_time_recursive": [
            
        ],
        "sectors_recursive": [
            
        ]
    },
    "num_procs": 0,
    "storage_stats": {
        
    },
    "cpu_stats": {
        "cpu_usage": {
            "total_usage": 360968065,
            "percpu_usage": [
                182359190,
                178608875
            ],
            "usage_in_kernelmode": 40000000,
            "usage_in_usermode": 290000000
        },
        "system_cpu_usage": 13939680000000,
        "online_cpus": 2,
        "throttling_data": {
            "periods": 0,
            "throttled_periods": 0,
            "throttled_time": 0
        }
    },
    "precpu_stats": {
        "cpu_usage": {
            "total_usage": 360968065,
            "percpu_usage": [
                182359190,
                178608875
            ],
            "usage_in_kernelmode": 40000000,
            "usage_in_usermode": 290000000
        },
        "system_cpu_usage": 13937670000000,
        "online_cpus": 2,
        "throttling_data": {
            "periods": 0,
            "throttled_periods": 0,
            "throttled_time": 0
        }
    },
    "memory_stats": {
        "usage": 1806336,
        "max_usage": 6299648,
        "stats": {
            "active_anon": 606208,
            "active_file": 0,
            "cache": 0,
            "dirty": 0,
            "hierarchical_memory_limit": 134217728,
            "hierarchical_memsw_limit": 268435456,
            "inactive_anon": 0,
            "inactive_file": 0,
            "mapped_file": 0,
            "pgfault": 4185,
            "pgmajfault": 0,
            "pgpgin": 2926,
            "pgpgout": 2778,
            "rss": 606208,
            "rss_huge": 0,
            "total_active_anon": 606208,
            "total_active_file": 0,
            "total_cache": 0,
            "total_dirty": 0,
            "total_inactive_anon": 0,
            "total_inactive_file": 0,
            "total_mapped_file": 0,
            "total_pgfault": 4185,
            "total_pgmajfault": 0,
            "total_pgpgin": 2926,
            "total_pgpgout": 2778,
            "total_rss": 606208,
            "total_rss_huge": 0,
            "total_unevictable": 0,
            "total_writeback": 0,
            "unevictable": 0,
            "writeback": 0
        },
        "limit": 134217728
    },
    "name": "/ecs-curltest-26-curl-c2e5f6e0cf91b0bead01",
    "id": "5fc21e5b015f899d22618f8aede80b6d70d71b2a75465ea49d9462c8f3d2d3af",
    "networks": {
        "eth0": {
            "rx_bytes": 84,
            "rx_packets": 2,
            "rx_errors": 0,
            "rx_dropped": 0,
            "tx_bytes": 84,
            "tx_packets": 2,
            "tx_errors": 0,
            "tx_dropped": 0
        }
    },
    "network_rate_stats": {
        "rx_bytes_per_sec": 0,
        "tx_bytes_per_sec": 0
    }
}
```

## 示例任务统计信息响应
<a name="task-metadata-endpoint-v4-example-task-stats-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI_V4}/task/stats` 端点时，将返回有关容器所属的任务的网络指标。下面是一个示例输出。

```
{
    "01999f2e5c6cf4df3873f28950e6278813408f281c54778efec860d0caad4854": {
        "read": "2020-10-02T00:51:32.51467703Z",
        "preread": "2020-10-02T00:51:31.50860463Z",
        "pids_stats": {
            "current": 1
        },
        "blkio_stats": {
            "io_service_bytes_recursive": [
                
            ],
            "io_serviced_recursive": [
                
            ],
            "io_queue_recursive": [
                
            ],
            "io_service_time_recursive": [
                
            ],
            "io_wait_time_recursive": [
                
            ],
            "io_merged_recursive": [
                
            ],
            "io_time_recursive": [
                
            ],
            "sectors_recursive": [
                
            ]
        },
        "num_procs": 0,
        "storage_stats": {
            
        },
        "cpu_stats": {
            "cpu_usage": {
                "total_usage": 177232665,
                "percpu_usage": [
                    13376224,
                    163856441
                ],
                "usage_in_kernelmode": 0,
                "usage_in_usermode": 160000000
            },
            "system_cpu_usage": 13977820000000,
            "online_cpus": 2,
            "throttling_data": {
                "periods": 0,
                "throttled_periods": 0,
                "throttled_time": 0
            }
        },
        "precpu_stats": {
            "cpu_usage": {
                "total_usage": 177232665,
                "percpu_usage": [
                    13376224,
                    163856441
                ],
                "usage_in_kernelmode": 0,
                "usage_in_usermode": 160000000
            },
            "system_cpu_usage": 13975800000000,
            "online_cpus": 2,
            "throttling_data": {
                "periods": 0,
                "throttled_periods": 0,
                "throttled_time": 0
            }
        },
        "memory_stats": {
            "usage": 532480,
            "max_usage": 6279168,
            "stats": {
                "active_anon": 40960,
                "active_file": 0,
                "cache": 0,
                "dirty": 0,
                "hierarchical_memory_limit": 9223372036854771712,
                "hierarchical_memsw_limit": 9223372036854771712,
                "inactive_anon": 0,
                "inactive_file": 0,
                "mapped_file": 0,
                "pgfault": 2033,
                "pgmajfault": 0,
                "pgpgin": 1734,
                "pgpgout": 1724,
                "rss": 40960,
                "rss_huge": 0,
                "total_active_anon": 40960,
                "total_active_file": 0,
                "total_cache": 0,
                "total_dirty": 0,
                "total_inactive_anon": 0,
                "total_inactive_file": 0,
                "total_mapped_file": 0,
                "total_pgfault": 2033,
                "total_pgmajfault": 0,
                "total_pgpgin": 1734,
                "total_pgpgout": 1724,
                "total_rss": 40960,
                "total_rss_huge": 0,
                "total_unevictable": 0,
                "total_writeback": 0,
                "unevictable": 0,
                "writeback": 0
            },
            "limit": 4073377792
        },
        "name": "/ecs-curltest-26-internalecspause-a6bcc3dbadfacfe85300",
        "id": "01999f2e5c6cf4df3873f28950e6278813408f281c54778efec860d0caad4854",
        "networks": {
            "eth0": {
                "rx_bytes": 84,
                "rx_packets": 2,
                "rx_errors": 0,
                "rx_dropped": 0,
                "tx_bytes": 84,
                "tx_packets": 2,
                "tx_errors": 0,
                "tx_dropped": 0
            }
        },
        "network_rate_stats": {
            "rx_bytes_per_sec": 0,
            "tx_bytes_per_sec": 0
        }
    },
    "5fc21e5b015f899d22618f8aede80b6d70d71b2a75465ea49d9462c8f3d2d3af": {
        "read": "2020-10-02T00:51:32.512771349Z",
        "preread": "2020-10-02T00:51:31.510597736Z",
        "pids_stats": {
            "current": 3
        },
        "blkio_stats": {
            "io_service_bytes_recursive": [
                
            ],
            "io_serviced_recursive": [
                
            ],
            "io_queue_recursive": [
                
            ],
            "io_service_time_recursive": [
                
            ],
            "io_wait_time_recursive": [
                
            ],
            "io_merged_recursive": [
                
            ],
            "io_time_recursive": [
                
            ],
            "sectors_recursive": [
                
            ]
        },
        "num_procs": 0,
        "storage_stats": {
            
        },
        "cpu_stats": {
            "cpu_usage": {
                "total_usage": 379075681,
                "percpu_usage": [
                    191355275,
                    187720406
                ],
                "usage_in_kernelmode": 60000000,
                "usage_in_usermode": 310000000
            },
            "system_cpu_usage": 13977800000000,
            "online_cpus": 2,
            "throttling_data": {
                "periods": 0,
                "throttled_periods": 0,
                "throttled_time": 0
            }
        },
        "precpu_stats": {
            "cpu_usage": {
                "total_usage": 378825197,
                "percpu_usage": [
                    191104791,
                    187720406
                ],
                "usage_in_kernelmode": 60000000,
                "usage_in_usermode": 310000000
            },
            "system_cpu_usage": 13975800000000,
            "online_cpus": 2,
            "throttling_data": {
                "periods": 0,
                "throttled_periods": 0,
                "throttled_time": 0
            }
        },
        "memory_stats": {
            "usage": 1814528,
            "max_usage": 6299648,
            "stats": {
                "active_anon": 606208,
                "active_file": 0,
                "cache": 0,
                "dirty": 0,
                "hierarchical_memory_limit": 134217728,
                "hierarchical_memsw_limit": 268435456,
                "inactive_anon": 0,
                "inactive_file": 0,
                "mapped_file": 0,
                "pgfault": 5377,
                "pgmajfault": 0,
                "pgpgin": 3613,
                "pgpgout": 3465,
                "rss": 606208,
                "rss_huge": 0,
                "total_active_anon": 606208,
                "total_active_file": 0,
                "total_cache": 0,
                "total_dirty": 0,
                "total_inactive_anon": 0,
                "total_inactive_file": 0,
                "total_mapped_file": 0,
                "total_pgfault": 5377,
                "total_pgmajfault": 0,
                "total_pgpgin": 3613,
                "total_pgpgout": 3465,
                "total_rss": 606208,
                "total_rss_huge": 0,
                "total_unevictable": 0,
                "total_writeback": 0,
                "unevictable": 0,
                "writeback": 0
            },
            "limit": 134217728
        },
        "name": "/ecs-curltest-26-curl-c2e5f6e0cf91b0bead01",
        "id": "5fc21e5b015f899d22618f8aede80b6d70d71b2a75465ea49d9462c8f3d2d3af",
        "networks": {
            "eth0": {
                "rx_bytes": 84,
                "rx_packets": 2,
                "rx_errors": 0,
                "rx_dropped": 0,
                "tx_bytes": 84,
                "tx_packets": 2,
                "tx_errors": 0,
                "tx_dropped": 0
            }
        },
        "network_rate_stats": {
            "rx_bytes_per_sec": 0,
            "tx_bytes_per_sec": 0
        }
    }
}
```

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

**重要**  
任务元数据版本 3 端点不再主动维护。我们建议您更新任务元数据版本 4 端点以获取最新的元数据端点信息。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 4](task-metadata-endpoint-v4.md)。  
如果您使用在 AWS Fargate 上托管的 Amazon ECS 任务，请参阅 [Fargate 上任务的 Amazon ECS 任务元数据端点版本 3](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v3-fargate.html)。

从 Amazon ECS 容器代理版本 1.21.0 开始，代理将称为 `ECS_CONTAINER_METADATA_URI` 的环境变量注入任务中的每个容器。在您查询任务元数据版本 3 端点时，将为任务提供各种任务元数据和 [Docker 统计数据](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。对于使用 `bridge` 网络模式的任务，查询 `/stats` 端点时可以使用网络指标。

对于在平台版本 v1.3.0 或更高版本上使用 Fargate 的任务，以及使用 EC2 并在运行至少 1.21.0 版本 Amazon ECS 容器代理的 Amazon EC2 Linux 基础设施或运行至少 `1.54.0` 版本 Amazon ECS 容器代理的 Amazon EC2 Windows 基础设施上启动并使用 `awsvpc` 网络模式的任务，默认启用任务元数据端点版本 3 功能。有关更多信息，请参阅 [Amazon ECS Linux 容器实例管理](manage-linux.md)。

您可以通过将代理更新为最新版本来增加在旧容器实例上对于该功能的支持。有关更多信息，请参阅 [更新 Amazon ECS 容器代理](ecs-agent-update.md)。

**重要**  
对于使用 Fargate 和 v1.3.0 之前的平台版本的任务，支持任务元数据版本 2 端点。有关更多信息，请参阅 [Amazon ECS 任务元数据端点版本 2](task-metadata-endpoint-v2.md)。

## 任务元数据端点版本 3 路径
<a name="task-metadata-endpoint-v3-paths"></a>

以下任务元数据端点可用于容器：

`${ECS_CONTAINER_METADATA_URI}`  
此路径返回容器的元数据 JSON。

`${ECS_CONTAINER_METADATA_URI}/task`  
此路径返回任务的元数据 JSON，包括与任务相关的所有容器的 ID 和名称列表。有关此端点响应的更多信息，请参阅[Amazon ECS 任务元数据 v3 JSON 响应](task-metadata-endpoint-v3-response.md)。

`${ECS_CONTAINER_METADATA_URI}/taskWithTags`  
除了可以使用 `ListTagsForResource` API 检索的任务和容器实例标记外，此路径还返回 `/task` 端点中包含的任务的元数据。

`${ECS_CONTAINER_METADATA_URI}/stats`  
此路径返回特定 Docker 容器的 Docker 统计数据 JSON。有关每个返回的统计信息的更多信息，请参阅 Docker API 文档中的 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

`${ECS_CONTAINER_METADATA_URI}/task/stats`  
此路径返回与任务相关的所有容器的 Docker 统计数据 JSON。有关每个返回的统计信息的更多信息，请参阅 Docker API 文档中的 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)。

# Amazon ECS 任务元数据 v3 JSON 响应
<a name="task-metadata-endpoint-v3-response"></a>

以下信息返回自任务元数据端点（`${ECS_CONTAINER_METADATA_URI}/task`）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` 时。

# Amazon ECS 任务元数据 v3 示例
<a name="task-metadata-endpoint-v3-examples"></a>

以下示例显示来自任务元数据端点的示例输出。

## 容器元数据响应示例
<a name="task-metadata-endpoint-v3-example-container-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI}` 端点时，仅返回有关容器本身的元数据。下面是一个示例输出。

```
{
    "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"
            ]
        }
    ]
}
```

## 任务元数据响应示例
<a name="task-metadata-endpoint-v3-example-task-metadata-response"></a>

查询 `${ECS_CONTAINER_METADATA_URI}/task` 端点时，将返回有关容器所属的任务的元数据。下面是一个示例输出。

以下是有关单容器任务的 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"
}
```

# 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"
}
```