본문으로 바로가기
반응형

Intro

ECR은 AWS에서 제공하는 docker hub repository 입니다. 만약 여러 AWS계정을 사용할 경우 (e.g. prod/staging/dev 등등) ECR을 각각 가져갈 필요없이 main으로 사용할 AWS계정에서 ECR을 만들고 타계정에서 메인계정의 ECR을 접근할 수 있도록 설정해주면 됩니다. 오늘은 이 작업을 어떻게 하는지에 대해 알려드리도록 하겠습니다. 물론 AWS DOC에 잘 나와있습니다만, 잘 이해가 되지 않는 부분도 있기 때문에 명확하게 설정하는 방법을 알려드리겠습니다.

타계정에서 메인계정 ECR에 push/pull 하는 방법

타계정(secondary account) 에서

  • 타계정의 IAM user에 "AmazonEC2ContainerRegistryPowerUser" 권한 추가

메인계정(main account) 에서

  • 메인 계정의 ECR repository에 아래와 같은 권한 추가 [ECR] - [Repositories]- [Permissions]
    • 해당권한 설정은 Registry permissions 설정이 아님을 주의해야합니다.
    • 메인 계정의 ECR에 권한이 필요한 repository에 각각 설정 필요
{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowPushPull",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::secondary_account_id:user/iam_user_name"
      },
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:CompleteLayerUpload",
        "ecr:GetDownloadUrlForLayer",
        "ecr:InitiateLayerUpload",
        "ecr:PutImage",
        "ecr:UploadLayerPart"
      ]
    }
  ]
}

docker pull/push 테스트

타계정의 iam user key를 aws configure 설정한 뒤 docker login

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin main_account_id.dkr.ecr.ap-northeast-2.amazonaws.com

위 상태에서 docker pull main_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/repo_name:tag 했을때 잘되는지 확인, push도 동일하게 테스트 진행

참고 URL

https://aws.amazon.com/ko/premiumsupport/knowledge-center/secondary-account-access-ecr/

반응형