Amazon ECS 容器元数据文件格式
以下信息存储在容器元数据 JSON 文件中。
Cluster
-
容器的任务在其上运行的集群的名称。
ContainerInstanceARN
-
主机容器实例的完整 Amazon Resource Name (ARN)。
TaskARN
-
容器所属的任务的完整 Amazon Resource Name (ARN)。
TaskDefinitionFamily
-
容器正在使用的任务定义系列的名称。
TaskDefinitionRevision
-
容器正在使用的任务定义修订版本。
ContainerID
-
容器的 Docker 容器 ID (而不是 Amazon ECS 容器 ID)。
ContainerName
-
容器 Amazon ECS 任务定义中的容器名称。
DockerContainerName
-
Docker 守护程序用于容器的容器名称(例如,docker ps 命令输出中显示的名称)。
ImageID
-
用于启动容器的 Docker 映像的 SHA 摘要。
ImageName
-
用于启动容器的 Docker 映像的映像名称和标签。
PortMappings
-
与容器关联的任何端口映射。
ContainerPort
-
公开的容器上的端口。
HostPort
-
公开的主机容器实例上的端口。
BindIp
-
Docker 分配给容器的绑定 IP 地址。此 IP 地址仅适用于
bridge
网络模式,只能从容器实例进行访问。 Protocol
-
用于端口映射的网络协议。
Networks
-
容器的网络模式和 IP 地址。
NetworkMode
-
容器所属的任务的网络模式。
IPv4Addresses
-
与容器关联的 IP 地址。
重要
如果您的任务使用的是
awsvpc
网络模式,则将不会返回容器的 IP 地址。在这种情况下,您可以通过使用以下命令读取 /etc/hosts 文件来检索 IP 地址:tail -1 /etc/hosts | awk '{print $1}'
MetadataFileStatus
-
元数据文件的状态。如果状态为
READY
,则元数据文件是最新状态且内容完整。如果文件尚未准备就绪 (例如在启动任务时),将会提供文件格式的截断版本。为了避免可能出现的竞用情况,比如已经启动容器,但尚未写入元数据,您可以解析元数据文件,并等待此参数设置为READY
,然后再使用元数据。这通常是在容器启动后的 1 秒内提供。 AvailabilityZone
-
主机容器实例所在的可用区。
HostPrivateIPv4Address
-
容器所属任务的私有 IP 地址。
HostPublicIPv4Address
-
容器所属任务的公有 IP 地址。
例 Amazon ECS 容器元数据文件 (READY
)
以下示例显示了处于 READY
状态的容器元数据文件。
{ "Cluster":"arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster", "TaskARN":"arn:aws:ecs:us-east-1:123456789012:task/MyCluster/b593651c4d6b44a6b2b583f45c957e15", "Family":"curltest-container", "Revision":"2", "DesiredStatus":"RUNNING", "KnownStatus":"RUNNING", "Limits": { "CPU":0.25, "Memory":512 }, "PullStartedAt":"2025-01-17T20:56:17.394610044Z", "PullStoppedAt":"2025-01-17T20:56:25.282708213Z", "AvailabilityZone":"us-east-1b", "LaunchType":"FARGATE", "Containers":[ { "DockerId":"b593651c4d6b44a6b2b583f45c957e15-3356213583", "Name":"curltest","DockerName":"curltest", "Image":"public.ecr.aws/amazonlinux/amazonlinux:latest", "ImageID":"sha256:7f371357694782356b65c7fd60dd1ca124c47bd5ed1b1ffe7c0e17f562898367", "Labels": { "com.amazonaws.ecs.cluster":"arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster", "com.amazonaws.ecs.container-name":"curltest", "com.amazonaws.ecs.task-arn":"arn:aws:ecs:us-east-1:123456789012:task/MyCluster/b593651c4d6b44a6b2b583f45c957e15", "com.amazonaws.ecs.task-definition-family":"curltest-container","com.amazonaws.ecs.task-definition-version":"2" }, "DesiredStatus":"RUNNING", "KnownStatus":"RUNNING", "Limits": { "CPU":2 }, "CreatedAt":"2025-01-17T20:56:26.180347056Z", "StartedAt":"2025-01-17T20:56:26.180347056Z", "Type":"NORMAL", "LogDriver":"awslogs", "LogOptions": { "awslogs-create-group":"true", "awslogs-group":"/ecs/curltest-container", "awslogs-region":"us-east-1", "awslogs-stream":"ecs/curltest/b593651c4d6b44a6b2b583f45c957e15" }, "ContainerARN":"arn:aws:ecs:us-east-1:123456789012:container/MyCluster/b593651c4d6b44a6b2b583f45c957e15/934575e8-5bdb-478f-b763-2341a85b690e", "Networks":[ { "NetworkMode":"awsvpc", "IPv4Addresses":["10.0.1.58"] } ], "Snapshotter":"overlayfs" } ], "ClockDrift": { "ClockErrorBound":0.487801,"ReferenceTimestamp":"2025-01-17T20:56:02Z", "ClockSynchronizationStatus":"SYNCHRONIZED" }, "FaultInjectionEnabled":false }
例 未完成的 Amazon ECS 容器元数据文件 (尚未处于 READY
状态)
以下示例显示了尚未处于 READY
状态的容器元数据文件。文件中的信息仅限任务定义中已知的几个参数。容器元数据文件应在容器启动后的 1 秒内准备就绪。
{ "Cluster": "default", "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/default/1f73d099-b914-411c-a9ff-81633b7741dd", "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/default/d90675f8-1a98-444b-805b-3d9cabb6fcd4", "ContainerName": "metadata" }