

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