Amazon ECS 任务元数据终端节点版本 2 - Amazon Elastic Container Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon ECS 任务元数据终端节点版本 2

重要

任务元数据版本 2 端点不再主动维护。我们建议您更新任务元数据版本 4 端点以获取最新的元数据端点信息。有关更多信息,请参阅 Amazon ECS 任务元数据终端节点版本 4

从 1.17.0 版容器代理开始,各种任务元数据和 Docker 统计数据都可用于那些在 Amazon ECS 容器代理所提供的 HTTP 端点上使用 awsvpc 网络模式的任务。

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

启用任务元数据

为以下任务默认启用任务元数据版本 2 功能:

  • 使用 Fargate 启动类型并使用平台版本 v1.1.0 或更高版本的任务。有关更多信息,请参阅 Fargate Linux 平台版本

  • 使用 EC2 启动类型的任务也使用 awsvpc 网络模式,并且在运行至少版本 1.17.0 的 Amazon ECS 容器代理的 Amazon EC2 Linux 基础设施或运行至少版本 1.54.0 的 Amazon ECS 容器代理的 Amazon EC2 Windows 基础设施上启动。有关更多信息,请参阅 Linux 容器实例管理

您可以通过将代理更新为最新版本来增加在旧容器实例上对于该功能的支持。有关更多信息,请参阅 更新 Amazon ECS 容器代理

任务元数据端点路径

以下 API 终端节点可用于容器:

169.254.170.2/v2/metadata

此终端节点返回任务的元数据 JSON,包括与任务相关的所有容器的 ID 和名称列表。有关此终端节点响应的更多信息,请参阅任务元数据 JSON 响应

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中的。

169.254.170.2/v2/stats/<container-id>

此终端节点为指定 Docker 容器 ID 返回 Docker 统计数据 JSON。有关返回的每个统计数据的更多信息,请参阅 Docker API 文档ContainerStats中的。

任务元数据 JSON 响应

以下信息返回自任务元数据终端节点 (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 摘要。

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 服务来测量时钟精度,并提供容器时钟误差。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的 Linux 实例设置时间

ReferenceTime

时钟准确度的基础。Amazon ECS 通过 NTP 使用协调世界时(UTC)全球标准,例如 2021-09-07T16:57:44Z

ClockErrorBound

时钟误差的度量,定义为与 UTC 的偏移量。此错误是参考时间和系统时间之间的差异(以毫秒为单位)。

ClockSynchronizationStatus

指示系统时间和参考时间之间的最近一次同步尝试是否成功。

有效值为 SYNCHRONIZED NOT_SYNCHRONIZED

ExecutionStoppedAt

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

任务元数据响应示例

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