

# Amazon ECS 容器元数据文件格式
<a name="metadata-file-format"></a>

以下信息存储在容器元数据 JSON 文件中。

`Cluster`  
容器的任务在其上运行的集群的名称。

`ContainerInstanceARN`  
主机容器实例的完整 Amazon 资源名称（ARN）。

`TaskARN`  
容器所属的任务的完整 Amazon 资源名称（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 地址。

**Example 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
}
```

**Example 未完成的 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"
}
```