다른 계정의 버킷 복제 구성하기

다른 계정의 버킷 복제 구성하기

라이브 복제(Live replication)는 같은 리전이나 다른 AWS 리전에 있는 버킷 간에 객체를 자동으로 비동기 복사하는 기능이에요. 새로 만들어진 객체와 객체 업데이트를 소스 버킷에서 대상 버킷으로 복사해 주죠. 자세한 내용은 리전 내·리전 간 객체 복제 문서를 참고하세요.

복제를 구성할 때는 소스 버킷에 복제 규칙을 추가해요. 복제 규칙은 어떤 소스 버킷 객체를 복제할지, 복제된 객체를 어느 대상 버킷에 저장할지 정의합니다. 버킷의 모든 객체를 복제하는 규칙을 만들 수도 있고, 특정 키 이름 접두사나 객체 태그를 기준으로 원하는 객체만 고를 수도 있어요. 대상 버킷은 소스 버킷과 같은 AWS 계정에 있을 수도 있고, 다른 계정에 있을 수도 있습니다.

특정 객체 버전 ID를 지정해서 삭제하면 Amazon S3는 소스 버킷에서 그 객체 버전을 삭제해요. 하지만 그 삭제를 대상 버킷에는 복제하지 않아요. 즉 대상 버킷에서 똑같은 객체 버전을 삭제하지는 않는 거죠. 이렇게 해서 악의적인 삭제로부터 데이터를 보호합니다.

버킷에 복제 규칙을 추가하면 규칙은 기본적으로 활성화되어 있어요. 그래서 저장하자마자 바로 동작합니다.

출처: 문서

서로 다른 계정에서의 복제 설정

소스 버킷과 대상 버킷이 서로 다른 AWS 계정에 속할 때 라이브 복제를 설정하는 건 두 버킷이 같은 계정에 있을 때와 비슷해요. 다만 계정 간(cross-account) 시나리오에서는 몇 가지가 달라집니다.

  • 대상 버킷 소유자는 대상 버킷 정책에서 소스 버킷 소유자에게 객체를 복제할 권한을 부여해야 해요.
  • 계정 간 시나리오에서 AWS KMS 키(SSE-KMS)로 암호화된 객체를 복제한다면 KMS 키 소유자가 소스 버킷 소유자에게 KMS 키를 사용할 권한을 부여해야 해요. 자세한 내용은 계정 간 시나리오에 대한 추가 권한 부여 문서를 참고하세요.
  • 기본적으로 복제된 객체는 소스 버킷 소유자가 소유해요. 계정 간 시나리오에서는 복제된 객체의 소유권을 대상 버킷 소유자로 바꾸도록 복제를 구성할 수도 있어요. 자세한 내용은 복제본 소유자 변경 문서를 참고하세요.

서로 다른 AWS 계정의 버킷 복제 설정하기

이 예시에서는 서로 다른 두 AWS 계정에 소스 버킷과 대상 버킷을 만들어요. AWS CLI에 자격 증명 프로필 두 개가 설정되어 있어야 해요. 이 예시에서는 프로필 이름으로 acctA와 acctB를 사용합니다. 자격 증명 프로필 설정과 명명된 프로필 사용에 대한 자세한 내용은 AWS Command Line Interface 사용자 안내서의 구성 및 자격 증명 파일 설정을 참고하세요.

같은 계정의 버킷 복제 구성하기 문서의 단계별 지침을 다음 변경 사항과 함께 따라가세요.

  • 소스 버킷 만들기, 버전 관리 활성화, IAM 역할 만들기 등 소스 버킷 활동과 관련된 모든 AWS CLI 명령에는 acctA 프로필을 사용해요. 대상 버킷을 만들 때는 acctB 프로필을 사용합니다.
  • IAM 역할의 권한 정책이 이 예시에서 만든 소스·대상 버킷을 지정하도록 확인하세요.

콘솔에서 대상 버킷에 다음과 같은 버킷 정책을 추가해서 소스 버킷 소유자가 객체를 복제할 수 있게 해요. 안내는 Amazon S3 콘솔로 버킷 정책 추가 문서를 참고하세요. 소스 버킷 소유자의 AWS 계정 ID, IAM 역할 이름, 대상 버킷 이름을 제공해서 정책을 꼭 편집하세요.

참고: 다음 예시를 쓰려면 user input placeholders를 자신의 정보로 바꿔야 해요. amzn-s3-demo-destination-bucket을 대상 버킷 이름으로 바꾸세요. IAM Amazon 리소스 이름(ARN)의 source-bucket-account-ID:role/source-account-IAM-role을 이 복제 구성에 사용하는 IAM 역할로 바꾸세요. IAM ARN의 역할 경로는 역할을 어떻게 만들었는지에 따라 달라져요. 같은 계정의 버킷 복제 구성하기 문서에서처럼 AWS CLI로 역할을 만들었다면 경로는 role/role-name이에요. IAM 콘솔에서 역할을 서비스 역할로 만들었다면 경로에 service-role/이 포함돼요(즉 role/service-role/role-name). 자세한 내용은 IAM 사용자 안내서의 IAM ARN을 참고하세요.

{
   "Version":"2012-10-17",
   "Id": "",
   "Statement": [
      {
         "Sid": "Set-permissions-for-objects",
         "Effect": "Allow",
         "Principal":{
            "AWS": "arn:aws:iam::source-bucket-account-ID:role/source-account-IAM-role"
         },
         "Action": [
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
      },
      {
         "Sid": "Set-permissions-on-bucket",
         "Effect": "Allow",
         "Principal":{
            "AWS": "arn:aws:iam::source-bucket-account-ID:role/source-account-IAM-role"
         },
         "Action": [
            "s3:GetBucketVersioning",
            "s3:PutBucketVersioning"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
      }
   ]
}

(선택 사항) SSE-KMS로 암호화된 객체를 복제한다면 KMS 키 소유자가 소스 버킷 소유자에게 KMS 키를 사용할 권한을 부여해야 해요. 자세한 내용은 계정 간 시나리오에 대한 추가 권한 부여 문서를 참고하세요.

(선택 사항) 복제에서 기본적으로 소스 객체 소유자가 복제본을 소유해요. 소스·대상 버킷이 서로 다른 AWS 계정에 속할 때는 복제본 소유권을 대상 버킷을 소유한 AWS 계정으로 바꾸는 선택적 구성 설정을 추가할 수 있어요. 여기에는 ObjectOwnerOverrideToBucketOwner 권한 부여가 포함됩니다. 자세한 내용은 복제본 소유자 변경 문서를 참고하세요.

더 알아보기