Amazon ECS 컨테이너 인트로스펙션

Amazon ECS 컨테이너 인트로스펙션

Amazon ECS 컨테이너 에이전트는 에이전트가 실행 중인 컨테이너 인스턴스와 해당 인스턴스에서 실행 중인 관련 태스크에 대한 세부 정보를 수집하는 API 작업을 제공해요. 컨테이너 인스턴스 내부의 curl 명령을 사용해 Amazon ECS 컨테이너 에이전트(포트 51678)를 조회하고 컨테이너 인스턴스 메타데이터나 태스크 정보를 반환할 수 있어요.

출처: 문서

본문

Amazon ECS 컨테이너 에이전트는 에이전트가 실행 중인 컨테이너 인스턴스와 해당 인스턴스에서 실행 중인 관련 태스크에 대한 세부 정보를 수집하는 API 작업을 제공해요. 컨테이너 인스턴스 내부의 curl 명령을 사용해 Amazon ECS 컨테이너 에이전트(포트 51678)를 조회하고 컨테이너 인스턴스 메타데이터 또는 태스크 정보를 반환할 수 있어요.

중요 컨테이너 인스턴스에는 메타데이터를 검색하기 위해 Amazon ECS에 대한 액세스를 허용하는 IAM 역할이 있어야 해요. 자세한 내용은 Amazon ECS container instance IAM role 을 참고해 주세요.

컨테이너 인스턴스 메타데이터를 보려면 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 컨테이너 에이전트는 인트로스펙션 API에 docker ps 에 표시되는 짧은 버전이 아닌 전체 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"
}

더 알아보기 (Learn more)