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 ps를 통해 표시되는 짧은 버전이 아니라 내부 검사 API에 대한 전체 Docker 컨테이너 ID를 요구합니다. 컨테이너 인스턴스에서 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"
}