CodePipeline과 미리 준비된 ACL을 사용하여 다른 AWS 계정의 Amazon S3에 아티팩트를 배포하려면 어떻게 해야 합니까?
Amazon S3 배포 작업 공급자 및 미리 준비된 액세스 제어 목록(ACL)과 함께 AWS CodePipeline을 사용하여 다른 계정의 Amazon Simple Storage Service(Amazon S3) 버킷에 아티팩트를 배포하려고 합니다.
해결 방법
참고: 다음 예시 절차에서는 다음을 가정합니다.
- 두 개의 AWS 계정인 개발 계정과 프로덕션 계정이 있습니다.
- 개발 계정의 입력 버킷을 codepipeline-input-bucket(버전 관리가 활성화됨)이라고 합니다.
- 개발 계정의 기본 아티팩트 버킷을 codepipeline-us-east-1-0123456789라고 합니다.
- 프로덕션 계정의 출력 버킷을 codepipeline-output-bucket이라고 합니다.
- 개발 계정의 아티팩트를 프로덕션 계정의 S3 버킷으로 배포하고 있습니다.
- 미리 준비된 ACL을 사용하여 프로덕션 계정의 버킷 소유자에게 개발 계정에서 소유하고 있는 객체에 대한 액세스 권한을 제공합니다.
참고: 아티팩트를 배포하고 프로덕션 계정을 객체 소유자로 설정하려면 CodePipeline을 사용하여 다른 계정의 Amazon S3에 아티팩트를 배포하려면 어떻게 해야 합니까?를 참조하십시오.
개발 계정에서 CodePipeline 생성
1. CodePipeline 콘솔을 엽니다. 그런 다음 파이프라인 생성을 선택합니다.
2. 파이프라인 이름에 파이프라인 이름을 입력합니다. 예: crossaccountdeploy.
참고: 역할 이름 텍스트 상자는 AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy라는 서비스 역할 이름으로 자동으로 채워집니다. 다른 기존 서비스 역할을 선택할 수도 있습니다.
3. 고급 설정 섹션을 확장합니다.
4. 아티팩트 저장소에서 기본 위치를 선택합니다.
참고: 사용 사례에 필요한 경우 사용자 지정 위치를 선택할 수 있습니다.
5. 암호화 키에서 기본 AWS 관리형 키를 선택합니다.
6. 다음을 선택합니다.
7. 소스 스테이지 추가 페이지에서 소스 공급자로 Amazon S3를 선택합니다.
8. 버킷에 개발 입력 S3 버킷의 이름을 입력합니다. 예: codepipeline-input-bucket.
중요: CodePipeline과 함께 작동하려면 입력 버킷의 버전 관리가 활성화되어 있어야 합니다.
9. S3 객체 키에 sample-website.zip를 입력합니다.
중요: 자체 웹 사이트 대신 예시 AWS 웹 사이트를 사용하려면 자습서: Amazon S3를 배포 공급자로 사용하는 파이프라인 생성을 참조하십시오. 그런 다음 사전 요구 사항을 1: Amazon S3에 정적 웹 사이트 파일 배포 섹션에서 찾아 "샘플 정적 웹 사이트"를 검색하십시오.
10. 변경 감지 옵션에서 **Amazon CloudWatch 이벤트(권장)**를 선택합니다.
- 다음을 선택합니다.
12. 빌드 단계 추가 페이지에서 빌드 단계 건너뛰기를 선택합니다. 그런 다음 건너뛰기를 선택합니다.
13. 배포 스테이지 추가 페이지의 배포 공급자에서 Amazon S3를 선택합니다.
14. 리전에서 출력 S3 버킷이 있는 AWS 리전을 선택합니다. 예: 미국 동부(버지니아 북부).
15. 버킷에 프로덕션 출력 S3 버킷의 이름을 입력합니다. 예: codepipeline-output-bucket.
16. 배포하기 전에 파일 압축 풀기 확인란을 선택합니다.
참고: 필요한 경우 배포 경로에 경로를 입력합니다.
17. 추가 구성을 확장합니다.
18. 미리 준비된 ACL에서 bucket-owner-full-control을 선택합니다.
참고: bucket-owner-full-control은 개발 계정이 배포하고 소유한 객체에 대한 전체 액세스 권한을 프로덕션 계정의 버킷 소유자에게 부여합니다. 자세한 내용은 미리 준비된 ACL을 참조하십시오.
19. 다음을 선택합니다.
20. 파이프라인 생성을 선택합니다. 파이프라인이 실행되지만 소스 스테이지는 실패합니다. 다음과 같은 오류가 표시됩니다. "The object with key 'sample-website.zip' does not exist."
이 문서의 입력 버킷에 샘플 웹 사이트 업로드 섹션에서 이 오류를 해결하는 방법을 설명합니다.
프로덕션 계정의 출력 버킷에 S3 액세스 권한을 추가하는 AWS Identity and Access Management(IAM) 정책을 사용하여 CodePipeline 서비스 역할 구성
1. 개발 계정에서 IAM 콘솔을 엽니다.
2. 탐색 창에서 정책을 선택합니다. 그런 다음 정책 생성을 선택합니다.
3. JSON 탭을 선택합니다. 그런 다음 JSON 편집기에 다음 정책을 입력합니다.
중요: codepipeline-output-bucket을 프로덕션 출력 S3 버킷의 이름으로 바꾸십시오.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-output-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-output-bucket" } ] }
4. 정책 검토를 선택합니다.
5. 이름에 정책 이름을 입력합니다. 예: prodbucketaccess.
- 정책 생성을 선택합니다.
7. 탐색 창에서 역할을 선택합니다.
8. 역할 목록에서 AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy를 선택합니다. 이는 CodePipeline 서비스 역할입니다.
참고: 사용 사례에 필요한 경우 자체 서비스 역할을 사용할 수 있습니다.
9. 정책 연결을 선택합니다.
10. 생성한 정책(prodbucketaccess)을 선택합니다. 그런 다음 정책 연결을 선택하여 프로덕션 출력 S3 버킷에 CodePipeline에 대한 액세스 권한을 부여합니다.
개발 계정에서 액세스를 허용하도록 프로덕션 계정의 출력 버킷 구성
1. 프로덕션 계정에서 Amazon S3 콘솔을 엽니다.
2. 버킷 이름 목록에서 프로덕션 출력 S3 버킷을 선택합니다. 예: codepipeline-output-bucket.
3. 권한을 선택합니다. 그런 다음 버킷 정책을 선택합니다.
4. 텍스트 편집기에서 다음 정책을 입력한 다음 저장을 선택합니다.
중요: dev-account-id를 개발 환경의 AWS 계정 ID로 바꾸십시오. codepipeline-output-bucket을 프로덕션 출력 S3 버킷의 이름으로 바꾸십시오.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::dev-account-id:root" }, "Action": "s3:Put*", "Resource": "arn:aws:s3:::codepipeline-output-bucket/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::dev-account-id:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-output-bucket" } ] }
입력 버킷에 샘플 웹 사이트 업로드
1. 개발 계정에서 Amazon S3 콘솔을 엽니다.
2. 버킷 이름 목록에서 개발 출력 S3 버킷을 선택합니다. 예: codepipeline-input-bucket.
3. 업로드를 선택합니다. 그런 다음 파일 추가를 선택합니다.
4. 다운로드한 sample-website.zip 파일을 선택합니다.
5. 업로드를 선택하여 파이프라인을 실행합니다. 파이프라인이 실행되면 다음과 같은 상황이 발생합니다.
- 소스 작업이 개발 입력 S3 버킷(codepipeline-input-bucket)에서 sample-website.zip을 선택합니다. 그런 다음 소스 작업이 zip 파일을 개발 계정(codepipeline-us-east-1-0123456789)의 기본 아티팩트 버킷 내에 소스 아티팩트로 배치합니다.
- 배포 작업에서 CodePipeline 서비스 역할(AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy)이 액세스 권한을 사용하여 프로덕션 출력 S3 버킷(codepipeline-output-bucket)에 배포합니다. 배포 작업은 미리 준비된 ACL bucket-owner-full-control도 적용합니다.
참고: 개발 계정은 프로덕션 출력 S3 버킷(codepipeline-output-bucket)에서 추출된 객체의 소유자입니다. 프로덕션 계정의 버킷 소유자도 배포된 아티팩트에 대한 전체 액세스 권한을 가집니다.

관련 콘텐츠
- 질문됨 6달 전lg...
- 질문됨 4달 전lg...
- 질문됨 4달 전lg...
- 질문됨 3달 전lg...
- AWS 공식업데이트됨 6달 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전