계정 간 S3 동기화를 지원하는 Replicating objects(객체 복제)를 알아보자.
S3 버킷 전체에 비동기식으로 자동 복사할 수 있고 다른 계정 간 복사가 가능하다.
아쉬운 점은 활성화된 새로운 S3 객체 복사만 지원하고 기존 객체를 받아올순 없다. (sync를 사용하자)
Source Bucket과 Destination bucket 모두 설정을 해주어야 한다.
source bucket에서 복제 규칙 생성을 선택한다.
❗️Bucket replication을 사용하기 위해서는 Source와 Destination bucket에서 Bucket Versioning이 활성화되어 있어야 한다.
복제 규칙 이름을 입력한다.
Replication을 받고자 하는 account ID 및 Destination Bucket 이름을 입력한다. Replication 되는 오브젝트는 기본적으로는 Source owner의 permission을 가지나 Destination owner가 권한을 가지도록 체크한다.
S3가 복제 작업을 할 수 있도록 IAM role 설정이 필요한데 새 역할 생성을 설정해서 자동으로 필요한 권한을 설정할 수 있도록 한다. 이때 생성한 IAM role 이름은 Destination 작업 에서 필요하다.
나머지 옵션은 필요에 따라 설정하면 된다.
Destination bucket에 Source Owner의 설정에 의해서 replication이 진행될 수 있도록 다음과 같은 Bucket Policy를 추가한다.
Source Bucket Owner의 account ID와 앞 단계에서 설정한 IAM role 이름을 Policy 설정시에 지정해 주면된다
{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:source-acct-IAM-role" //Source Bucket 작업 시 생성한 IAM 역할 ARN }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket/*" //Destination Bucket }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:source-acct-IAM-role" //Source Bucket 작업 시 생성한 IAM 역할 ARN }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::destinationbucket" //Destination Bucket } ] }
성공이 되면 복제 규칙에 상태가 활성화 되어 자동으로 버킷이 동기화 된다.
안녕하세요.
destination bucket policy만 올려주셨는데요.
source bucket policy 와 iam role에 policy도 어떻게 만드셨는지 궁금합니다!!