Amazon ECS 컨테이너 메타데이터 파일 형식
Amazon ECS 컨테이너 메타데이터 파일 형식
다음 정보는 컨테이너 메타데이터 JSON 파일에 저장됩니다. 이 글에서는 컨테이너 메타데이터 파일의 각 필수 필드와 예시를 알아봅니다.
출처: 문서
본문
다음 정보는 컨테이너 메타데이터 JSON 파일에 저장됩니다.
- Cluster — 컨테이너의 태스크가 실행되는 클러스터의 이름.
- ContainerInstanceARN — 호스트 컨테이너 인스턴스의 전체 Amazon 리소스 이름(ARN).
- TaskARN — 컨테이너가 속한 태스크의 전체 Amazon 리소스 이름(ARN).
- TaskDefinitionFamily — 컨테이너가 사용하는 태스크 정의 패밀리의 이름.
- TaskDefinitionRevision — 컨테이너가 사용하는 태스크 정의 개정.
- ContainerID — 컨테이너의 Docker 컨테이너 ID(Amazon ECS 컨테이너 ID 아님).
- ContainerName — 컨테이너의 Amazon ECS 태스크 정의에서 가져온 컨테이너 이름.
- DockerContainerName — Docker 데몬이 컨테이너에 사용하는 컨테이너 이름(예:
docker ps명령 출력에 표시되는 이름). - ImageID — 컨테이너를 시작하는 데 사용된 Docker 이미지의 SHA 다이제스트(digest).
- ImageName — 컨테이너를 시작하는 데 사용된 Docker 이미지의 이미지 이름과 태그.
- PortMappings — 컨테이너와 연결된 모든 포트 매핑.
- ContainerPort — 노출된 컨테이너의 포트.
- HostPort — 노출된 호스트 컨테이너 인스턴스의 포트.
- BindIp — Docker가 컨테이너에 할당한 바인드 IP 주소. 이 IP 주소는
bridge네트워크 모드에서만 적용되며 컨테이너 인스턴스에서만 접근할 수 있습니다. - Protocol — 포트 매핑에 사용된 네트워크 프로토콜.
- Networks — 컨테이너의 네트워크 모드와 IP 주소.
-
NetworkMode — 컨테이너가 속한 태스크의 네트워크 모드.
-
IPv4Addresses — 컨테이너와 연결된 IP 주소.
- 중요: 태스크가
awsvpc네트워크 모드를 사용한다면 컨테이너의 IP 주소는 반환되지 않습니다. 이 경우 다음 명령으로/etc/hosts파일을 읽어 IP 주소를 검색할 수 있어요:
tail -1 /etc/hosts | awk '{print $1}' - 중요: 태스크가
-
- MetadataFileStatus — 메타데이터 파일의 상태. 상태가
READY이면 메타데이터 파일이 최신이고 완전한 것입니다. 파일이 아직 준비되지 않았다면(예: 태스크가 시작된 직후) 파일 형식의 잘린(truncated) 버전을 사용할 수 있어요. 컨테이너가 시작되었지만 메타데이터가 아직 기록되지 않은 경쟁 조건(race condition)을 피하려면 메타데이터 파일을 구문 분석하고 이 파라미터가READY로 설정될 때까지 기다린 다음 메타데이터에 의존하세요. 이는 컨테이너 시작 후 일반적으로 1초 이내에 사용할 수 있습니다. - AvailabilityZone — 호스트 컨테이너 인스턴스가 위치한 가용 영역.
- HostPrivateIPv4Address — 컨테이너가 속한 태스크의 프라이빗 IP 주소.
- HostPublicIPv4Address — 컨테이너가 속한 태스크의 퍼블릭 IP 주소.
예시: Amazon ECS 컨테이너 메타데이터 파일 (READY)
다음 예시는 READY 상태의 컨테이너 메타데이터 파일을 보여줍니다.
{
"Cluster":"arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
"TaskARN":"arn:aws:ecs:us-east-1:123456789012:task/MyCluster/b593651c4d6b44a6b2b583f45c957e15",
"Family":"curltest-container",
"Revision":"2",
"DesiredStatus":"RUNNING",
"KnownStatus":"RUNNING",
"Limits":
{
"CPU":0.25,
"Memory":512
},
"PullStartedAt":"2025-01-17T20:56:17.394610044Z",
"PullStoppedAt":"2025-01-17T20:56:25.282708213Z",
"AvailabilityZone":"us-east-1b",
"LaunchType":"FARGATE",
"Containers":[
{
"DockerId":"b593651c4d6b44a6b2b583f45c957e15-3356213583",
"Name":"curltest","DockerName":"curltest",
"Image":"public.ecr.aws/amazonlinux/amazonlinux:latest",
"ImageID":"sha256:7f371357694782356b65c7fd60dd1ca124c47bd5ed1b1ffe7c0e17f562898367",
"Labels":
{
"com.amazonaws.ecs.cluster":"arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
"com.amazonaws.ecs.container-name":"curltest",
"com.amazonaws.ecs.task-arn":"arn:aws:ecs:us-east-1:123456789012:task/MyCluster/b593651c4d6b44a6b2b583f45c957e15",
"com.amazonaws.ecs.task-definition-family":"curltest-container","com.amazonaws.ecs.task-definition-version":"2"
},
"DesiredStatus":"RUNNING",
"KnownStatus":"RUNNING",
"Limits":
{
"CPU":2
},
"CreatedAt":"2025-01-17T20:56:26.180347056Z",
"StartedAt":"2025-01-17T20:56:26.180347056Z",
"Type":"NORMAL",
"LogDriver":"awslogs",
"LogOptions":
{
"awslogs-create-group":"true",
"awslogs-group":"/ecs/curltest-container",
"awslogs-region":"us-east-1",
"awslogs-stream":"ecs/curltest/b593651c4d6b44a6b2b583f45c957e15"
},
"ContainerARN":"arn:aws:ecs:us-east-1:123456789012:container/MyCluster/b593651c4d6b44a6b2b583f45c957e15/934575e8-5bdb-478f-b763-2341a85b690e",
"Networks":[
{
"NetworkMode":"awsvpc",
"IPv4Addresses":["10.0.1.58"]
}
],
"Snapshotter":"overlayfs"
}
],
"ClockDrift":
{
"ClockErrorBound":0.487801,"ReferenceTimestamp":"2025-01-17T20:56:02Z",
"ClockSynchronizationStatus":"SYNCHRONIZED"
},
"FaultInjectionEnabled":false
}
예시: 불완전한 Amazon ECS 컨테이너 메타데이터 파일 (아직 READY 아님)
다음 예시는 아직 READY 상태에 도달하지 않은 컨테이너 메타데이터 파일을 보여줍니다. 파일의 정보는 태스크 정의에서 알 수 있는 몇 가지 파라미터로 제한됩니다. 컨테이너 메타데이터 파일은 컨테이너 시작 후 1초 이내에 준비되어야 합니다.
{
"Cluster": "default",
"ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/default/1f73d099-b914-411c-a9ff-81633b7741dd",
"TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/default/d90675f8-1a98-444b-805b-3d9cabb6fcd4",
"ContainerName": "metadata"
}
더 알아보기 (Learn more)
- 컨테이너 메타데이터 및 태스크 메타데이터에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.