Amazon ECS 容器內省 - Amazon Elastic Container Service

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

Amazon ECS 容器內省

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

重要

您的容器執行個體必須擁有允許存取 Amazon ECS 以擷取中繼資料的 IAM 角色。如需詳細資訊,請參閱 Amazon ECS 容器執行個體 IAM 角色

若要檢視容器執行個體中繼資料,請透過 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"
}