Amazon ECS コンテナの詳細分析 - Amazon Elastic Container Service

Amazon ECS コンテナの詳細分析

Amazon ECS コンテナエージェントは、エージェントが実行しているコンテナインスタンスおよびインスタンスで実行されている関連タスクに関する詳細を収集する API オペレーションを提供します。コンテナインスタンス内から curl コマンドを使用して Amazon ECS コンテナエージェント (ポート 51678) をクエリし、コンテナインスタンスのメタデータまたはタスク情報を受け取ることができます。

重要

メタデータを取得するには、Amazon ECS にアクセスするための IAM; ロールがコンテナインスタンスに必要です。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

コンテナインスタンスのメタデータを表示するには、SSH 経由でコンテナインスタンスにログインし、以下のコマンドを実行します。メタデータには、Amazon ECS コンテナインスタンス ID、コンテナインスタンスが登録されているクラスター、 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 ps で表示される短縮バージョンではなく、イントロスペクション API 用の完全な Docker コンテナ ID が必要です。コンテナの完全な Docker ID は、コンテナインスタンスで docker ps --no-trunc コマンドを実行して取得できます。

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"
}