

# Amazon ECS 작업 메타데이터 엔드포인트 버전 2
<a name="task-metadata-endpoint-v2"></a>

**중요**  
태스크 메타데이터 버전 2 엔드포인트는 더 이상 능동적으로 관리되지 않습니다. 최신 메타데이터 엔드포인트 정보를 가져오려면 태스크 메타데이터 버전 4 엔드포인트를 업데이트하는 것이 좋습니다. 자세한 정보는 [Amazon ECS 작업 메타데이터 엔드포인트 버전 4](task-metadata-endpoint-v4.md)을 참조하세요.

Amazon ECS 컨테이너 에이전트 버전 1.17.0부터 다양한 태스크 메타데이터와 [Docker 통계](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)가 Amazon ECS 컨테이너 에이전트에서 제공하는 HTTP 엔드포인트에서 `awsvpc` 네트워크 모드를 사용하는 태스크에 제공됩니다.

`awsvpc` 네트워크 모드를 사용하여 시작되는 태스크에 속한 모든 컨테이너는 미리 정의된 링크-로컬 주소 범위 내의 로컬 IPv4 주소를 받습니다. 컨테이너가 메타데이터 엔드포인트를 쿼리할 때 Amazon ECS 컨테이너 에이전트는 고유의 IP 주소를 기반으로 컨테이너가 어떤 태스크에 속하는지를 확인할 수 있으며 해당 태스크에 대한 메타데이터와 통계가 반환됩니다.

## 태스크 메타데이터 활성화
<a name="task-metadata-endpoint-v2-enable"></a>

**중요**  
태스크 메타데이터 버전 2 엔드포인트는 더 이상 능동적으로 관리되지 않습니다. 최신 메타데이터 엔드포인트 정보를 가져오려면 태스크 메타데이터 버전 4 엔드포인트를 업데이트하는 것이 좋습니다. 자세한 정보는 [Amazon ECS 작업 메타데이터 엔드포인트 버전 4](task-metadata-endpoint-v4.md)을 참조하세요.

Amazon ECS 컨테이너 에이전트 버전 1.17.0부터 다양한 태스크 메타데이터와 [Docker 통계](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)가 Amazon ECS 컨테이너 에이전트에서 제공하는 HTTP 엔드포인트에서 `awsvpc` 네트워크 모드를 사용하는 태스크에 제공됩니다.

`awsvpc` 네트워크 모드를 사용하여 시작되는 태스크에 속한 모든 컨테이너는 미리 정의된 링크-로컬 주소 범위 내의 로컬 IPv4 주소를 받습니다. 컨테이너가 메타데이터 엔드포인트를 쿼리할 때 Amazon ECS 컨테이너 에이전트는 고유의 IP 주소를 기반으로 컨테이너가 어떤 태스크에 속하는지를 확인할 수 있으며 해당 태스크에 대한 메타데이터와 통계가 반환됩니다.

### 태스크 메타데이터 활성화
<a name="task-metadata-endpoint-v2-enable"></a>

태스크 메타데이터 버전 2 기능은 기본적으로 다음 작업에 대해 사용하도록 설정됩니다.
+ 플랫폼 버전 v1.1.0 이상을 사용하는 Fargate를 사용하는 태스크. 자세한 내용은 [Amazon ECS에 대한 Fargate 플랫폼 버전](platform-fargate.md) 섹션을 참조하세요.
+ 똑같이 `awsvpc` 네트워크 모드를 사용하는 EC2를 사용하고, Amazon EC2 Linux 인프라(Amazon ECS 컨테이너 에이전트 버전 1.17.0 이상에서 실행됨) 또는 Amazon EC2 Windows 인프라(Amazon ECS 컨테이너 에이전트 버전 `1.54.0` 이상에서 실행됨)에서 시작된 태스크. 자세한 내용은 [Amazon ECS Linux 컨테이너 인스턴스 관리](manage-linux.md) 섹션을 참조하세요.

에이전트를 최신 버전으로 업데이트하여 이전 버전의 컨테이너 인스턴스에서 이 기능에 대한 지원을 추가할 수 있습니다. 자세한 정보는 [Amazon ECS 컨테이너 에이전트 업데이트](ecs-agent-update.md)을 참조하세요.

### 태스크 메타데이터 엔드포인트 경로
<a name="task-metadata-endpoint-v2-paths"></a>

다음 API 엔드포인트를 컨테이너에 사용할 수 있습니다.

`169.254.170.2/v2/metadata`  
이 엔드포인트는 태스크와 연결된 모든 컨테이너의 컨테이너 ID 및 이름 목록을 포함하여 태스크에 대한 메타데이터 JSON을 반환합니다. 이 엔드포인트의 응답에 대한 자세한 내용은 [태스크 메타데이터 JSON 응답](#task-metadata-endpoint-v2-response) 섹션을 참조하세요.

`169.254.170.2/v2/metadata/<container-id>`  
이 엔드포인트는 지정된 Docker 컨테이너 ID에 대한 메타데이터 JSON을 반환합니다.

`169.254.170.2/v2/metadata/taskWithTags`  
이 경로는 `ListTagsForResource` API를 사용하여 검색할 수 있는 태스크와 컨테이너 인스턴스 태그 외에도 `/task` 엔드포인트에 포함된 태스크에 대한 메타데이터를 반환합니다.

`169.254.170.2/v2/stats`  
이 엔드포인트는 태스크와 연결된 모든 컨테이너에 대한 Docker 통계 JSON을 반환합니다. 반환된 각 통계에 대한 자세한 내용은 Docker API 설명서의 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)를 참조하세요.

`169.254.170.2/v2/stats/<container-id>`  
이 엔드포인트는 지정된 Docker 컨테이너 ID에 대한 Docker 통계 JSON을 반환합니다. 반환된 각 통계에 대한 자세한 내용은 Docker API 설명서의 [ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)를 참조하세요.

### 태스크 메타데이터 JSON 응답
<a name="task-metadata-endpoint-v2-response"></a>

다음 정보가 태스크 메타데이터 엔드포인트(`169.254.170.2/v2/metadata`) JSON 응답에서 반환됩니다.

`Cluster`  
태스크가 속한 Amazon ECS 클러스터의 Amazon 리소스 이름(ARN) 또는 약어입니다.

`TaskARN`  
컨테이너가 속한 태스크의 Amazon 리소스 이름(ARN)입니다.

`Family`  
태스크에 대한 Amazon ECS 태스크 정의의 패밀리입니다.

`Revision`  
작업에 대한 Amazon ECS 태스크 정의의 개정입니다.

`DesiredStatus`  
Amazon ECS의 태스크에 대해 원하는 상태입니다.

`KnownStatus`  
Amazon ECS의 태스크에 대해 알려진 상태입니다.

`Limits`  
작업 수준에서 지정된 리소스 제한입니다(예: CPU(vCPU로 표시) 및 메모리). 리소스 제한이 정의되지 않은 경우 이 파라미터가 생략됩니다.

`PullStartedAt`  
첫 번째 컨테이너 이미지 풀이 시작된 시간에 대한 타임스탬프입니다.

`PullStoppedAt`  
마지막 컨테이너 이미지 풀이 완료된 시간에 대한 타임스탬프입니다.

`AvailabilityZone`  
태스크가 위치한 가용 영역입니다.  
가용 영역 메타데이터는 플랫폼 버전 1.4 이상(Linux) 또는 1.0.0 이상(Windows)을 사용하는 Fargate 태스크에만 사용할 수 있습니다.

`Containers`  
태스크와 연결된 각 컨테이너에 대한 컨테이너 메타데이터의 목록입니다.    
`DockerId`  
컨테이너의 Docker ID입니다.  
`Name`  
태스크 정의에 지정된 컨테이너의 이름입니다.  
`DockerName`  
Docker에 제공된 컨테이너의 이름입니다. 동일한 태스크 정의의 여러 복사본이 단일 인스턴스에서 실행될 때 이름 충돌을 방지하기 위해 Amazon ECS 컨테이너 에이전트는 컨테이너에 고유의 이름을 생성합니다.  
`Image`  
컨테이너에 대한 이미지입니다.  
`ImageID`  
이미지 매니페스트의 SHA-256 다이제스트입니다. `repository-url/image@sha256:digest` 형식을 통해 이미지를 가져오는 데 사용할 수 있는 다이제스트입니다.  
`Ports`  
컨테이너에 대해 노출된 포트입니다. 노출된 포트가 없는 경우 이 파라미터가 생략됩니다.  
`Labels`  
컨테이너에 적용된 레이블입니다. 적용된 레이블이 없는 경우 이 파라미터가 생략됩니다.  
`DesiredStatus`  
Amazon ECS의 컨테이너에 대해 원하는 상태입니다.  
`KnownStatus`  
Amazon ECS의 컨테이너에 대해 알려진 상태입니다.  
`ExitCode`  
컨테이너에 대한 종료 코드입니다. 컨테이너가 종료되지 않은 경우 이 파라미터가 생략됩니다.  
`Limits`  
컨테이너 수준에서 지정된 리소스 제한입니다(예: CPU(CPU 단위로 표시) 및 메모리). 리소스 제한이 정의되지 않은 경우 이 파라미터가 생략됩니다.  
`CreatedAt`  
컨테이너가 생성된 시간에 대한 타임스탬프입니다. 컨테이너가 아직 생성되지 않은 경우 이 파라미터가 생략됩니다.  
`StartedAt`  
컨테이너가 시작된 시간에 대한 타임스탬프입니다. 컨테이너가 아직 시작되지 않은 경우 이 파라미터가 생략됩니다.  
`FinishedAt`  
컨테이너가 중지된 시간에 대한 타임스탬프입니다. 컨테이너가 아직 중지되지 않은 경우 이 파라미터가 생략됩니다.  
`Type`  
컨테이너의 유형입니다. 태스크 정의에서 지정된 컨테이너는 `NORMAL` 유형입니다. Amazon ECS 컨테이너 에이전트가 내부 작업 리소스 프로비저닝에 사용하는 기타 컨테이너 유형은 무시할 수 있습니다.  
`Networks`  
컨테이너에 대한 네트워크 정보(예: 네트워크 모드 및 IP 주소)입니다. 네트워크 정보가 정의되지 않은 경우 이 파라미터가 생략됩니다.

`ClockDrift`  
기준 시간과 시스템 시간의 차이에 대한 정보입니다. 이는 Linux 운영 체제에 적용됩니다. 이 기능은 Amazon Time Sync Service를 사용하여 클럭 정확도를 측정하고 컨테이너에 대한 클록 오류 범위를 제공합니다. 자세한 내용은 *Amazon EC2 Linux용 사용 설명서*의 [Linux 인스턴스에 대한 시간 설정](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)을 참조하세요.    
`ReferenceTime`  
클록 정확도의 기초입니다. Amazon ECS는 NTP를 통해 협정 세계시(UTC) 글로벌 표준을 사용합니다(예: `2021-09-07T16:57:44Z`).  
`ClockErrorBound`  
UTC에 대한 오프셋으로 정의되는 클록 오류 측정값입니다. 이 오류는 기준 시간과 시스템 시간의 차이(밀리초)입니다.  
`ClockSynchronizationStatus`  
시스템 시간과 기준 시간 간의 가장 최근 동기화 시도가 성공했는지를 나타냅니다.  
유효 값은 `SYNCHRONIZED` 및 ` NOT_SYNCHRONIZED`입니다.

`ExecutionStoppedAt`  
태스크의 `DesiredStatus`가 `STOPPED`로 이동한 시간에 대한 타임스탬프입니다. 이 동작은 필수 컨테이너가 `STOPPED`로 이동할 때 발생합니다.

### 예제 태스크 메타데이터 응답
<a name="task-metadata-endpoint-v2-example-task-metadata-response"></a>

다음은 단일 컨테이너 태스크에 대한 JSON 응답입니다.

```
{
  "Cluster": "default",
  "TaskARN": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
  "Family": "nginx",
  "Revision": "5",
  "DesiredStatus": "RUNNING",
  "KnownStatus": "RUNNING",
  "Containers": [
    {
      "DockerId": "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c",
      "Name": "~internal~ecs~pause",
      "DockerName": "ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700",
      "Image": "amazon/amazon-ecs-pause:0.1.0",
      "ImageID": "",
      "Labels": {
        "com.amazonaws.ecs.cluster": "default",
        "com.amazonaws.ecs.container-name": "~internal~ecs~pause",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
        "com.amazonaws.ecs.task-definition-family": "nginx",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RESOURCES_PROVISIONED",
      "KnownStatus": "RESOURCES_PROVISIONED",
      "Limits": {
        "CPU": 0,
        "Memory": 0
      },
      "CreatedAt": "2018-02-01T20:55:08.366329616Z",
      "StartedAt": "2018-02-01T20:55:09.058354915Z",
      "Type": "CNI_PAUSE",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": [
            "10.0.2.106"
          ]
        }
      ]
    },
    {
      "DockerId": "43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946",
      "Name": "nginx-curl",
      "DockerName": "ecs-nginx-5-nginx-curl-ccccb9f49db0dfe0d901",
      "Image": "nrdlngr/nginx-curl",
      "ImageID": "sha256:2e00ae64383cfc865ba0a2ba37f61b50a120d2d9378559dcd458dc0de47bc165",
      "Labels": {
        "com.amazonaws.ecs.cluster": "default",
        "com.amazonaws.ecs.container-name": "nginx-curl",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3",
        "com.amazonaws.ecs.task-definition-family": "nginx",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RUNNING",
      "KnownStatus": "RUNNING",
      "Limits": {
        "CPU": 512,
        "Memory": 512
      },
      "CreatedAt": "2018-02-01T20:55:10.554941919Z",
      "StartedAt": "2018-02-01T20:55:11.064236631Z",
      "Type": "NORMAL",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": [
            "10.0.2.106"
          ]
        }
      ]
    }
  ],
  "PullStartedAt": "2018-02-01T20:55:09.372495529Z",
  "PullStoppedAt": "2018-02-01T20:55:10.552018345Z",
  "AvailabilityZone": "us-east-2b"
}
```