Amazon ECS에서 AWS 컨테이너가 아닌 이미지 사용 - Amazon Elastic Container Service

Amazon ECS에서 AWS 컨테이너가 아닌 이미지 사용

프라이빗 레지스트리를 사용하여 AWS Secrets Manager에 자격 증명을 저장한 후 작업 정의에서 참조합니다. 이는 태스크 정의에서 인증이 필요한 AWS 외부의 프라이빗 레지스트리에 있는 컨테이너 이미지를 참조하는 방법을 제공합니다. 이 기능은 Fargate, Amazon EC2 인스턴스 및 Amazon ECS Anywhere를 사용하는 외부 인스턴스에서 호스팅되는 태스크에서 지원됩니다.

중요

태스크 정의가 Amazon ECR에 저장된 이미지를 참조하는 경우 이 주제가 적용되지 않습니다. 자세한 정보는 Amazon Elastic Container Registry 사용 설명서Amazon ECS에서 Amazon ECR 이미지 사용을 참조하세요.

Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우 이 기능을 사용하려면 버전 1.19.0 이상의 컨테이너 에이전트가 있어야 합니다. 그러나 최신 버전의 컨테이너 에이전트를 사용하는 것이 좋습니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 정보는 Amazon ECS 컨테이너 에이전트 업데이트 섹션을 참조하세요.

Fargate에서 호스팅되는 태스크의 경우 이 기능을 사용하려면 플랫폼 버전 1.2.0 이상이 필요합니다. 자세한 설명은 Amazon ECS에 대한 Fargate Linux 플랫폼 버전을 참조하세요.

컨테이너 정의에서 자신이 생성한 암호의 세부 정보와 함께 repositoryCredentials 객체를 지정합니다. 참조하는 보안 암호는 다른 AWS 리전 또는 이를 사용하는 태스크와 다른 계정에서 가져온 것일 수 있습니다.

참고

Amazon ECS API, AWS CLI 또는 AWS SDK를 사용할 때 시작하는 태스크와 같은 AWS 리전에 암호가 존재할 경우, 암호의 전체 ARN 또는 이름을 사용할 수 있습니다. 암호가 다른 계정에 있는 경우 암호의 전체 ARN을 지정해야 합니다. AWS Management Console을 사용할 때는 항상 암호의 전체 ARN을 지정해야 합니다.

다음은 필요한 파라미터를 나타낸 태스크 정의의 예제 조각입니다.

private-repo를 프라이빗 리포지토리 호스트 이름으로 대체하고 private-image를 이미지 이름으로 대체합니다.

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
참고

프라이빗 레지스트리 인증을 활성화할 수 있는 또 한 가지 방법은 Amazon ECS 컨테이너 에이전트 환경 변수를 사용해 프라이빗 레지스트리를 인증하는 것입니다. 이 방법은 Amazon EC2 인스턴스에서 호스팅되는 태스크에만 지원됩니다. 자세한 내용은 프라이빗 Docker 이미지를 위한 Amazon ECS 컨테이너 인스턴스 구성 단원을 참조하십시오.

프라이빗 레지스트리를 사용하는 방법
  1. 태스크 정의에는 태스크 실행 역할이 있어야 합니다. 컨테이너 에이전트는 이 기능을 통해 컨테이너 이미지를 가져올 수 있습니다. 자세한 정보는 Amazon ECS 태스크 실행 IAM 역할을 참조하세요.

    생성하는 암호에 액세스 권한을 부여하려면 다음 권한을 인라인 정책으로 태스크 실행 역할에 추가하세요. 자세한 정보는 IAM 정책 추가 및 제거 섹션을 참조하세요.

    • secretsmanager:GetSecretValue

    • kms:Decrypt―사용자 키가 기본 KMS 키가 아닌 사용자 지정 KMS 키를 사용하는 경우에만 필요합니다. 사용자 지정 키의 Amazon 리소스 이름(ARN)을 리소스로 추가해야 합니다.

    다음 예제에서는 인라인 정책이 권한을 추가합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }
  2. AWS Secrets Manager에서 프라이빗 레지스트리 자격 증명에 사용할 암호를 생성합니다. 보안 암호 생성 방법에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서의 Create an AWS Secrets Manager secret을 참조하세요.

    다음 형식을 사용하여 프라이빗 레지스트리 자격 증명을 입력합니다.

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  3. 태스크 정의 등록. 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 단원을 참조하십시오.