내용으로 건너뛰기

Amazon ECS가 배포 중에 최신 컨테이너 인스턴스 이미지 다이제스트를 사용하는지 확인하려면 어떻게 해야 합니까?

3분 분량
0

최신 이미지로 작업을 실행하도록 Amazon Elastic Container Service(Amazon ECS) 서비스를 업데이트했지만 일부 작업에서는 새 이미지를 사용하지 않습니다. 또는 Amazon ECS 작업이 실패하고 CannotPullContainerError 오류가 발생합니다.

간략한 설명

Amazon ECS에서 이미지를 업데이트할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

"CannotPullContainerError: pull image manifest has been retried 1 time(s): failed to resolve ref account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677: account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677: not found"

이미지를 업데이트할 때는 서비스도 업데이트해야 합니다. 기본적으로 Amazon ECS는 작업 정의에 지정된 컨테이너 이미지 태그를 컨테이너 이미지 다이제스트로 해석합니다.

단일 작업을 실행하고 유지 관리하는 서비스의 경우 Amazon ECS는 작업을 사용하여 작업 컨테이너에 대한 이미지 다이제스트를 설정합니다. 여러 작업을 실행하고 유지 관리하는 서비스의 경우 Amazon ECS는 서비스 스케줄러가 배포 중에 시작한 첫 번째 작업을 사용합니다. 작업 정의에서 이미지 태그를 업데이트할 때 이미지 다이제스트를 업데이트하려면 서비스를 업데이트하고 새 배포 강제 적용 설정을 사용하십시오.

이미지 동작에 대한 자세한 내용은 컨테이너 이미지 확인을 참조하십시오.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

서비스가 최신 이미지를 사용하는지 확인

서비스가 최신 이미지를 사용하는지 확인하려면 Amazon ECS 서비스를 업데이트한 다음, 새 배포 강제 적용 옵션을 사용하십시오. 또는 다음 AWS CLI update-service 명령을 실행합니다.

aws ecs update-service --cluster clustername --service servicename --force-new-deployment

참고: clustername을 클러스터 이름으로, servicename을 서비스 이름으로 바꾸십시오.

특정 이미지 다이제스트를 사용하려면 작업 정의를 업데이트한 다음, 이미지 URI 섹션을 수정하십시오.

imageUri@imagedigest

"image": "accountid.dkr.ecr.region-name.amazonaws.com/image:latest@sha256:da04638bxxxxxxxxxx,"

‘Image digest does not exist’ 오류 해결

Image digest does not exist 오류가 표시되면 이미지를 삭제했는지 확인하십시오.

이미지 다이제스트가 Amazon Elastic Container Registry(Amazon ECR) 리포지토리에 있는지 확인하려면 describe-images 명령을 실행합니다.

aws ecr describe-images --repository-name repositoryname --region regionname --query 'sort_by(imageDetails,& imagePushedAt)[*]'

참고: repositoryname을 리포지토리 이름으로 바꾸고 regionname을 AWS 리전으로 바꾸십시오.

명령 출력에는 리포지토리의 모든 이미지가 표시됩니다. 이미지 다이제스트가 존재하지 않는 경우 BatchDeleteImage API 호출에 대한 AWS CloudTrail 이벤트 기록을 확인하여 이미지가 삭제된 이유를 확인하십시오. Amazon ECR 수명 주기 정책이 실행 중인 작업에서 사용하는 이미지를 삭제할 수 있는지 확인하려면 CloudTrail에서 PolicyExecutionEvent API 호출을 확인하십시오.

컨테이너 이미지 태그가 변경되지 않도록 하려면 태그 변경 불가능 기능을 켜는 것이 가장 좋습니다.

참고: CODE_DEPLOY 또는 EXTERNAL 배포 컨트롤러를 사용하는 서비스에서는 컨테이너 이미지 태그가 확인되지 않습니다.

이미지 다이제스트를 업데이트하려면 서비스가 최신 이미지를 사용하는지 확인 섹션의 단계를 완료하십시오.

버전 일관성 비활성화

일관된 이미지 대신 LATEST와 같은 변경 가능한 컨테이너 이미지 태그를 사용해야 할 수 있습니다. 설정을 구성하려면 컨테이너 정의를 업데이트하여 versionConsistency비활성화됨으로 설정합니다. 기본적으로 versionConsistency활성화됨으로 설정되어 있습니다. 값을 비활성화됨으로 변경하면 Amazon ECS는 더 이상 컨테이너 이미지 태그를 다이제스트로 해석하지 않습니다. 대신 Amazon ECS는 컨테이너 정의의 원래 이미지 URI를 배포에 사용합니다.

관련 정보

Amazon ECS 서비스의 소프트웨어 버전 일관성 발표

AWS 공식업데이트됨 2년 전