任务元数据终端节点版本 3
任务元数据版本 3 端点不再主动维护。我们建议您更新任务元数据版本 4 端点以获取最新的元数据端点信息。有关更多信息,请参阅任务元数据终端节点版本 4。
如果您使用的是托管在 AWS Fargate 上的 Amazon ECS 任务,请参阅 AWS FargateAmazon Elastic Container Service 用户指南中的任务元数据端点版本 3。
从 Amazon ECS 容器代理版本 1.21.0 开始,代理将称为 ECS_CONTAINER_METADATA_URI
的环境变量注入任务中的每个容器。在您查询任务元数据版本 3 终端节点时,将为任务提供各种任务元数据和 Docker 统计数据bridge
网络模式的任务,查询 /stats
终端节点时可以使用网络指标。
启用任务元数据
预设情况下,对于在平台版本v1.3.0或更高版本上使用 Fargate 启动类型的任务,以及使用 EC2 启动类型并在运行至少版本 1.21.0 的 Amazon ECS 容器代理的 Amazon EC2 Linux 基础设施或在 Amazon EC2 Windows 基础设施上启动的任务,会启用任务元数据端点版本3功能运行至少版本 1.54.0
的 Amazon ECS 容器代理并使用 awsvpc
网络模式。有关更多信息,请参阅Amazon ECS Linux 容器代理版本。
您可以通过将代理更新为最新版本来增加在旧容器实例上对于该功能的支持。有关更多信息,请参阅更新 Amazon ECS 容器代理。
对于使用 Fargate 启动类型和 v1.3.0 之前的平台版本的任务,支持任务元数据版本 2 端点。有关更多信息,请参阅任务元数据终端节点版本 2。
任务元数据终端节点版本 3 路径
以下任务元数据终端节点可用于容器:
${ECS_CONTAINER_METADATA_URI}
-
此路径返回容器的元数据 JSON。
${ECS_CONTAINER_METADATA_URI}/task
-
此路径返回任务的元数据 JSON,包括与任务相关的所有容器的 ID 和名称列表。有关此终端节点响应的更多信息,请参阅任务元数据 JSON 响应。
${ECS_CONTAINER_METADATA_URI}/taskWithTags
-
除了可以使用
ListTagsForResource
API 检索的任务和容器实例标记外,此路径还返回/task
端点中包含的任务的元数据。 ${ECS_CONTAINER_METADATA_URI}/stats
-
此路径返回特定 Docker 容器的 Docker 统计数据 JSON。有关每个返回的统计信息的更多信息,请参阅 Docker API 文档中的 ContainerStats
。 ${ECS_CONTAINER_METADATA_URI}/task/stats
-
此路径返回与任务相关的所有容器的 Docker 统计数据 JSON。有关每个返回的统计信息的更多信息,请参阅 Docker API 文档中的 ContainerStats
。
任务元数据 JSON 响应
以下信息返回自任务元数据终端节点 (${ECS_CONTAINER_METADATA_URI}/task
) 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 和内存)。如果未定义资源限制,则省略此参数。
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 和内存)。如果未定义资源限制,则省略此参数。
CreatedAt
-
创建容器时的时间戳。如果尚未创建容器,则省略此参数。
StartedAt
-
容器启动时的时间戳。如果尚未启动容器,则省略此参数。
FinishedAt
-
容器停止时的时间戳。如果尚未停止容器,则省略此参数。
Type
-
容器的类型。在您的任务定义中指定的容器属于
NORMAL
类型。您可以省略其他被 Amazon ECS 容器代理用来进行内部任务资源预配置的容器类型。 Networks
-
容器的网络信息,如网络模式和 IP 地址。如果未定义网络信息,则省略此参数。
ClockDrift
-
有关参考时间和系统时间之间差异的信息。这适用于 Linux 操作系统。
ReferenceTime
-
时钟准确度的基础。Amazon ECS 通过 NTP 使用协调世界时(UTC)全球标准,例如
2021-09-07T16:57:44Z
。 ClockErrorBound
-
时钟误差的度量,定义为与 UTC 的偏移量。此错误是参考时间和系统时间之间的差异(以毫秒为单位)。
ClockSynchronizationStatus
-
指示系统时间和参考时间之间的最近一次同步尝试是否成功。
有效值为
SYNCHRONIZED
和NOT_SYNCHRONIZED
。
ExecutionStoppedAt
-
任务的
DesiredStatus
变为STOPPED
时的时间戳。这将发生在关键容器变成STOPPED
时。
示例
以下示例显示来自任务元数据终端节点的示例输出。
容器元数据响应示例
查询 ${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" ] } ] }
任务元数据响应示例
查询 ${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" }