AWS에 다중 환경에서 자동 배포 권한 설정

배경


  • AWS에 ECR 및 ECS로 백엔드 서비스를 구축하고 있습니다
  • 한 번의 클릭으로 코드 배포를 수행하고 싶습니다
  • 개발 환경과 프로덕션 환경은 별도의 AWS 계정이 됩니다

  • 내용



    AWS CodeBuild란?


  • 완전 관리형 빌드 서비스
  • 소스 코드 컴파일
  • 단위 테스트
  • 배포

  • buildspec.yml


  • 단위 테스트 수행
  • docker image build
  • ECR에 push

  • 문제




  • 개발 계정의 CodeBuild에서 프로덕션 계정의 ECR로 푸시 할 때 권한 설정이 필요합니다.

    대책



    프로덕션 계정 측


  • ECR 리포지토리에 사용 권한 추가
  • 개발 계정의 putimage 권한 허용

  • { 
      "Version": "2008-10-17", 
      "Statement": [ 
        { 
          "Sid": "AllowPushPull", 
          "Effect": "Allow", 
          "Principal": { 
            “AWS”: “arn:aws:iam::開発アカウントID" 
          }, 
          "Action": [ 
            ......
            "ecr:PutImage", 
            "ecr:UploadLayerPart" 
          ] 
        } 
      ] 
    } 
    
    
    

    개발 계정 측


  • 빌드 프로젝트의 서비스 역할에 STS 및 ECR 작업 권한 추가
  • sts-policy:
    
    { 
        "Version": "2012-10-17", 
        "Statement": [ 
            { 
                "Sid": "VisualEditor1", 
                "Effect": "Allow", 
                "Action": [ 
                    "sts:AssumeRole" 
                ], 
                “Resource”: “arn:aws:iam::開発アカウントID:role/service-role/ロール名" 
            } 
        ] 
    } 
    
    
    ECRへpush権限:
    
    { 
        "Version": "2012-10-17", 
        "Statement": [ 
            { 
                "Sid": "VisualEditor0", 
                "Effect": "Allow", 
                "Action": [ 
                    ....
                    "ecr:PutImage", 
                    ......
                ], 
                “Resource”: “arn:aws:ecr:ap-northeast-1:本番アカウントID:repository/リポジトリ名" 
            }, 
            { 
                "Sid": "VisualEditor1", 
                "Effect": "Allow", 
                "Action": "ecr:GetAuthorizationToken", 
                "Resource": "*" 
            } 
        ] 
    } 
    
    
    
    

    좋은 웹페이지 즐겨찾기