Amazon Elastic Container Service(Amazon ECS)의 Amazon Elastic Container Registry(Amazon ECR)에서 Docker 이미지를 가져오면 "error pulling image configuration: error parsing HTTP 403 response body." 오류가 발생합니다.
간략한 설명
Amazon ECR은 Amazon Simple Storage Service(Amazon S3)를 사용하여 이미지 레이어를 저장합니다. 컨테이너가 Amazon ECR에서 이미지를 다운로드할 때 이미지 매니페스트를 가져오려면 Amazon ECR에 액세스해야 합니다. 컨테이너가 Amazon ECR에 액세스한 후, 컨테이너는 Amazon S3에 액세스하여 이미지 레이어를 다운로드합니다.
다음은 각 Docker 이미지의 레이어가가 포함된 Amazon S3 버킷의 Amazon Resource Name(ARN) 입니다.
arn:aws:s3:::prod-region-starport-layer-bucket/*
starport-layer-bucket에 대한 액세스를 제한하는 정책이 있는 라우팅 테이블에서 S3 게이트웨이 엔드포인트를 사용하는 경우 다음 오류 메시지가 표시됩니다.
"error pulling image configuration: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>SAMPLE-REQUEST-ID</RequestId><HostId>SAMPLE-HOST-ID</HostId></Error>"
기본적으로 Amazon S3에 게이트웨이 엔드포인트를 생성하면 모든 리소스에 완전히 액세스할 수 있습니다.
특정 리소스에 대한 액세스를 허용하는 사용자 지정 정책이 있는 경우 Amazon S3 정책에 starport-layer-bucket ARN을 추가해야 합니다.
해결 방법
이 오류를 해결하려면 다음 단계를 따르세요:
- Amazon Virtual Private Cloud(Amazon VPC) 콘솔을 엽니다.
- 탐색 창에서 엔드포인트를 선택합니다.
- 목록에서 S3 엔드포인트를 선택합니다.
- 정책 탭을 선택한 다음 정책 편집을 선택합니다.
- 정책의 리소스 섹션에서 다음 ARN을 추가합니다.
arn:aws:s3:::prod-region-starport-layer-bucket/*
참고: ARN에는 AWS 리전이 포함되어야 합니다.
정책 예시:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Access-to-specific-buckets",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::prod-us-east-1-starport-layer-bucket/*"
]
}
]
}
관련 정보
Amazon S3 게이트웨이 엔드포인트 생성