任务元数据终端节点版本 3
从 Amazon ECS 容器代理版本 1.21.0 开始,代理将称为 ECS_CONTAINER_METADATA_URI
的环境变量注入任务中的每个容器。在您查询任务元数据版本 3 终端节点时,将为任务提供各种任务元数据和 Docker 统计数据。
启用任务元数据
任务元数据终端节点版本 3 功能默认为在平台版本 v1.3.0 或更高版本上使用 Fargate 启动类型的任务以及使用 EC2 启动类型并在最低运行 1.21.0 版的 Amazon ECS 容器代理的 Amazon EC2 基础设施上启动的任务启用。有关更多信息,请参阅Amazon ECS 容器代理版本。
您可以通过将代理更新为最新版本来增加在旧容器实例上对于该功能的支持。有关更多信息,请参阅 更新 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}/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
-
The Amazon ECS cluster to which the task belongs.
TaskARN
-
The full Amazon Resource Name (ARN) of the task to which the container belongs.
Family
-
The family of the Amazon ECS task definition for the task.
Revision
-
The revision of the Amazon ECS task definition for the task.
DesiredStatus
-
The desired status for the task from Amazon ECS.
KnownStatus
-
The known status for the task from Amazon ECS.
Containers
-
A list of container metadata for each container associated with the task.
DockerId
-
The Docker ID for the container.
Name
-
The name of the container as specified in the task definition.
DockerName
-
The name of the container supplied to Docker. The Amazon ECS container agent generates a unique name for the container to avoid name collisions when multiple copies of the same task definition are run on a single instance.
Image
-
The image for the container.
ImageID
-
The SHA-256 digest for the image.
Ports
-
Any ports exposed for the container. This parameter is omitted if there are no exposed ports.
Labels
-
Any labels applied to the container. This parameter is omitted if there are no labels applied.
DesiredStatus
-
The desired status for the container from Amazon ECS.
KnownStatus
-
The known status for the container from Amazon ECS.
ExitCode
-
The exit code for the container. This parameter is omitted if the container has not exited.
Limits
-
The resource limits specified at the container level (such as CPU and memory). This parameter is omitted if no resource limits are defined.
CreatedAt
-
The time stamp for when the container was created. This parameter is omitted if the container has not been created yet.
StartedAt
-
The time stamp for when the container started. This parameter is omitted if the container has not started yet.
FinishedAt
-
The time stamp for when the container stopped. This parameter is omitted if the container has not stopped yet.
Type
-
The type of the container. Containers that are specified in your task definition are of type
NORMAL
. You can ignore other container types, which are used for internal task resource provisioning by the Amazon ECS container agent. Networks
-
The network information for the container, such as the network mode and IP address. This parameter is omitted if no network information is defined.
Limits
-
The resource limits specified at the task level (such as CPU and memory). This parameter is omitted if no resource limits are defined.
PullStartedAt
-
The time stamp for when the first container image pull began.
PullStoppedAt
-
The time stamp for when the last container image pull finished.
ExecutionStoppedAt
-
The time stamp for when the tasks
DesiredStatus
moved toSTOPPED
. This occurs when an essential container moves toSTOPPED
. AvailabilityZone
-
The Availability Zone the task is in.
任务元数据响应示例
The following JSON response is for a single-container task.
{ "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" }