Amazon ECS에서 Amazon ECR 이미지 사용하기

Amazon ECS에서 Amazon ECR 이미지 사용하기

Amazon ECS 태스크가 pull 해올 수 있도록 Amazon ECR 프라이빗 저장소에 컨테이너 이미지와 아티팩트를 호스팅할 수 있어요. 이를 위해서는 Amazon ECS 또는 Fargate 컨테이너 에이전트가 ecr:BatchGetImage, ecr:GetDownloadUrlForLayer, ecr:GetAuthorizationToken API를 호출할 권한을 가져야 해요.

출처: 문서

본문

필요한 IAM 권한

다음 표는 태스크가 Amazon ECR 프라이빗 저장소에서 pull 하기 위해 필요한 권한을 제공하는, 실행 유형별 IAM 역할을 보여줘요. Amazon ECS는 필요한 권한을 포함하는 관리형 IAM 정책을 제공해요.

실행 유형 IAM 역할 AWS 관리형 IAM 정책
Amazon EC2 인스턴스의 Amazon ECS Amazon ECS 클러스터에 등록된 Amazon EC2 인스턴스와 연결된 컨테이너 인스턴스 IAM 역할을 사용해요. 자세한 내용은 Amazon Elastic Container Service Developer Guide의 '컨테이너 인스턴스 IAM 역할'을 참고해요. AmazonEC2ContainerServiceforEC2Role – 자세한 내용은 Amazon Elastic Container Service Developer Guide의 AmazonEC2ContainerServiceforEC2Role을 참고해요.
Fargate의 Amazon ECS Amazon ECS 태스크 정의에서 참조하는 태스크 실행 IAM 역할을 사용해요. 자세한 내용은 Amazon Elastic Container Service Developer Guide의 '태스크 실행 IAM 역할'을 참고해요. AmazonECSTaskExecutionRolePolicy – 자세한 내용은 Amazon Elastic Container Service Developer Guide의 AmazonECSTaskExecutionRolePolicy를 참고해요.
외부 인스턴스의 Amazon ECS Amazon ECS 클러스터에 등록된 온프레미스 서버 또는 가상 머신(VM)과 연결된 컨테이너 인스턴스 IAM 역할을 사용해요. 자세한 내용은 Amazon Elastic Container Service Developer Guide의 '컨테이너 인스턴스 Amazon ECS 역할'을 참고해요. AmazonEC2ContainerServiceforEC2Role – 자세한 내용은 Amazon Elastic Container Service Developer Guide의 AmazonEC2ContainerServiceforEC2Role을 참고해요.

중요: AWS 관리형 IAM 정책에는 사용 사례에서 필요하지 않은 추가 권한이 포함될 수 있어요. 이 경우, 위 권한들이 Amazon ECR 프라이빗 저장소에서 pull 하기 위한 최소 필수 권한이에요.

JSON:

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}

Amazon ECS 태스크 정의에서 Amazon ECR 이미지 지정하기

Amazon ECS 태스크 정의를 만들 때 Amazon ECR 프라이빗 저장소에 호스팅된 컨테이너 이미지를 지정할 수 있어요. 태스크 정의에서는 Amazon ECR 이미지에 대해 전체 registry/repository:tag 명명 규칙을 사용해야 해요. 예를 들어 aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:latest처럼요.

다음 태스크 정의 스니펫은 Amazon ECS 태스크 정의에서 Amazon ECR에 호스팅된 컨테이너 이미지를 지정하는 구문을 보여줘요.

{
    "family": "task-definition-name",
    ...
    "containerDefinitions": [
        {
            "name": "container-name",
            "image": "aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:latest",
            ...
        }
    ],
    ...
}

더 알아보기 (Learn more)