

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon ECS 容器自我檢查
<a name="ecs-agent-introspection"></a>

Amazon ECS 容器代理程式提供一種 API 操作，它收集執行代理程式的容器執行個體的詳細資訊，以及在該執行個體上執行之關聯任務的詳細資訊。您可以在容器執行個體內使用 **curl** 命令來查詢 Amazon ECS 容器代理程式 (連接埠 51678)，並傳回容器執行個體的中繼資料或任務資訊。

**重要**  
您的容器執行個體必須擁有允許存取 Amazon ECS 以擷取中繼資料的 IAM 角色。如需詳細資訊，請參閱[Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。

若要檢視容器執行個體中繼資料，請透過 SSH 登入您的容器執行個體，並執行以下命令。中繼資料包含容器執行個體 ID、註冊容器執行個體的 Amazon ECS 叢集，以及 Amazon ECS 容器代理程式版本資訊。

```
curl -s http://localhost:51678/v1/metadata | python3 -mjson.tool
```

輸出：

```
{
    "Cluster": "cluster_name",
    "ContainerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/cluster_name/container_instance_id",
    "Version": "Amazon ECS Agent - v1.30.0 (02ff320c)"
}
```

若要檢視所有在容器執行個體上執行之任務的資訊，請透過 SSH 登入您的容器執行個體，然後執行以下命令：

```
curl http://localhost:51678/v1/tasks
```

輸出：

```
{
    "Tasks": [
        {
            "Arn": "arn:aws:ecs:us-west-2:012345678910:task/default/example5-58ff-46c9-ae05-543f8example",
            "DesiredStatus": "RUNNING",
            "KnownStatus": "RUNNING",
            "Family": "hello_world",
            "Version": "8",
            "Containers": [
                {
          "DockerId": "9581a69a761a557fbfce1d0f6745e4af5b9dbfb86b6b2c5c4df156f1a5932ff1",
          "DockerName": "ecs-hello_world-8-mysql-fcae8ac8f9f1d89d8301",
          "Name": "mysql",
          "CreatedAt": "2023-10-08T20:09:11.44527186Z",
          "StartedAt": "2023-10-08T20:09:11.44527186Z",
          "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de"
        },
        {
          "DockerId": "bf25c5c5b2d4dba68846c7236e75b6915e1e778d31611e3c6a06831e39814a15",
          "DockerName": "ecs-hello_world-8-wordpress-e8bfddf9b488dff36c00",
          "Name": "wordpress"
        }
    ]
}
    ]
}
```

您可以檢視在該容器執行個體上執行之特定任務的資訊。若要指定特定任務或容器，請將以下其中一項附加到請求：
+ 任務 ARN (`?taskarn=task_arn`)
+ 容器的 Docker ID (`?dockerid=docker_id`)

 若要使用容器的 Docker ID 取得任務資訊，請透過 SSH 登入您的容器執行個體，然後執行以下命令。

**注意**  
1.14.2 版之前的 Amazon ECS 容器代理程式需要完整的 Docker 容器 ID 以用於自我檢查 API，而非 **docker ps** 顯示的簡短版本。您可以藉由在容器執行個體上執行 **docker ps --no-trunc** 命令，取得容器完整的 Docker ID。

```
curl http://localhost:51678/v1/tasks?dockerid=79c796ed2a7f
```

輸出：

```
{
    "Arn": "arn:aws:ecs:us-west-2:012345678910:task/default/e01d58a8-151b-40e8-bc01-22647b9ecfec",
    "Containers": [
        {
            "DockerId": "79c796ed2a7f864f485c76f83f3165488097279d296a7c05bd5201a1c69b2920",
            "DockerName": "ecs-nginx-efs-2-nginx-9ac0808dd0afa495f001",
            "Name": "nginx",
            "CreatedAt": "2023-10-08T20:09:11.44527186Z",
            "StartedAt": "2023-10-08T20:09:11.44527186Z",
            "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de"
        }
    ],
    "DesiredStatus": "RUNNING",
    "Family": "nginx-efs",
    "KnownStatus": "RUNNING",
    "Version": "2"
}
```