메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

교차 리전 복제 설정

교차 리전 복제를 설정하려면 두 버킷—(원본과 대상)이 필요합니다. 두 버킷의 버전 관리를 활성화하고 서로 다른 AWS 리전에 위치하게 합니다. 버킷을 만들 수 있는 AWS 리전 목록에 대해서는 AWS General Reference리전과 엔드포인트를 참조하십시오. 원본 버킷의 객체는 오직 한 개의 버킷에만 복제가 가능합니다.

중요

버전이 지정되지 않은 버킷에 객체 만료 수명 주기 정책이 있고 버전 관리를 사용할 때 같은 영구 삭제 행동을 유지하고자 하는 경우에는 비 최신 버전의 만료 정책을 추가해야 합니다. 비 최신 버전의 만료 수명 주기 정책은 버전 관리를 사용하는 버킷에서 비 최신 객체 버전의 삭제를 관리합니다. (버전 관리가 활성화된 버킷은 하나의 현재 객체 버전과 0개 이상의 최신이 아닌 객체 버전을 유지합니다.) 자세한 내용은 S3 버킷에 대한 수명 주기 정책을 생성하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

동일한 AWS 계정에서 소유한 버킷에 대한 교차 리전 복제 설정

동일한 AWS 계정에서 두 버킷을 모두 소유한 경우, 원본에서 대상 버킷으로 교차 리전 복제를 설정하려면 다음과 같이 작업을 수행합니다.

  • 계정에서 IAM 역할을 생성합니다. 이 역할은 Amazon S3에 사용자 대신 객체를 복제할 권한을 부합니다.

  • 원본 버킷에 복제 구성을 추가합니다.

IAM 역할 생성

Amazon S3에서는 원본 버킷의 객체를 대상 버킷에 복제합니다. IAM 역할을 통해 Amazon S3에 필요한 권한을 부여해야 합니다.

참고

기본적으로 Amazon S3 리소스인 버킷, 객체 및 관련 하위 리소스는 모두 비공개이며 리소스 소유자만 리소스에 액세스할 수 있습니다. 그러므로 Amazon S3는 원본 버킷에서 객체를 읽고 이를 대상 버킷에 복제할 권한이 필요합니다.

IAM 역할을 생성할 때 다음 정책을 역할에 연결합니다.

  • Amazon S3를 역할을 맡을 수 있는 서비스 보안 주체로 식별하는 신뢰 정책, 예:

    Copy
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

    IAM 역할에 대한 자세한 내용은 IAM 사용 설명서IAM 역할 단원을 참조하십시오.

  • 역할에 사용자 대신 복제 작업을 수행할 권한을 부여하는 액세스 정책. Amazon S3가 이 역할을 맡으면 이 정책에 지정된 권한을 갖게 됩니다.

    Copy
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }

    액세스 정책은 다음 작업을 수행할 권한을 부여합니다.

    • s3:GetReplicationConfigurations3:ListBucket - Amazon S3가 원본 버킷에 대한 이러한 작업 권한을 사용하여 복제 구성을 검색하고 버킷을 나열할 수 있습니다(현재의 권한 모델은 삭제 마커에 액세스하기 위해 s3:ListBucket 권한이 필요함).

    • s3:GetObjectVersions3:GetObjectVersionAcl - Amazon S3가 모든 객체에 대해 부여되는 이러한 작업 권한을 사용하여 특정 객체 버전과 ACL(액세스 제어 목록)을 가져올 수 있습니다.

    • s3:ReplicateObjects3:ReplicateDelete - Amazon S3가 대상 버킷의 객체에 대한 이러한 작업 권한을 사용하여 대상 버킷에 객체 또는 삭제 마커를 복제할 수 있습니다. 삭제 마커에 대한 자세한 내용은 작업과 교차 리전 복제 삭제을 참조하십시오.

      참고

      또한 대상 버킷에 대한 s3:ReplicateObject 작업 권한을 사용하여 객체 태그를 복제할 수 있습니다. 따라서 Amazon S3는 객체 태그도 복제합니다(s3:ReplicateTags 작업에 대한 권한을 명시적으로 부여할 필요 없음).

    • s3:GetObjectVersionTagging - Amazon S3가 원본 버킷의 객체에 대한 이 작업 권한을 사용하여 복제 대상 객체 태그를 읽을 수 있습니다(객체 태그 지정 단원 참조). Amazon S3에 이 권한이 없는 경우 객체는 복제되지만 객체 태그(있는 경우)는 복제되지 않습니다.

    Amazon S3 작업 목록에 대해서는 정책에서 권한 지정을 참조하십시오.

    중요

    권한이 있는 리소스에 대해서만 권한을 부여할 수 있습니다. 구체적으로 말하면, IAM 역할을 소유한 AWS 계정은 해당 IAM 역할에 부여된 작업을 수행할 권한이 있어야 합니다.

    예를 들어 원본 버킷에 다른 AWS 계정이 소유한 객체가 포함되어 있다고 가정하겠습니다. 객체 소유자는 객체 ACL을 통해 IAM 역할을 소유한 AWS 계정에 필요한 권한을 명시적으로 부여해야 합니다. 그렇지 않으면 Amazon S3에서 역할 정책에 부여된 권한에 따라 이러한 객체에 액세스할 수 없으므로 이러한 객체의 교차 리전 복제가 실패합니다. ACL 권한에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

    추가 CRR 구성에 대해 자세히 알아보았으므로 이제 Amazon S3에 추가 리소스에 대한 권한을 부여할 수 있습니다. 이 경우에도 일반적인 규칙이 적용됩니다. 즉, IAM 역할을 소유한 AWS 계정은 해당 IAM 역할에 부여된 작업을 수행할 권한이 있어야 합니다.

복제 구성 추가

사용자가 버킷에 복제 구성을 추가하면 Amazon S3는 해당 구성을 XML로 저장합니다. 다음은 구성의 예입니다. XML 구조에 대한 자세한 내용은 Amazon Simple Storage Service API ReferencePUT Bucket replication을 참조하십시오.

예 1: 한 가지 규칙으로 이루어진 복제 구성

다음 복제 구성을 고려합니다.

Copy
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix></Prefix> <Destination><Bucket>arn:aws:s3:::destinationbucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

이 구성은 Amazon S3에서 맡을 수 있는 IAM 역할 외에도 다음과 같이 규칙 하나를 지정합니다.

  • 규칙이 적용됨을 나타내는 규칙 상태

  • 규칙이 버킷 내 모든 객체에 적용됨을 나타내는 빈 접두사

  • 객체가 복제되는 대상 버킷

필요할 경우 아래와 같이 객체 복제본에 대해 스토리지 클래스를 지정할 수 있습니다.

Copy
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix></Prefix> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

<Rule>에 스토리지 클래스를 지정하지 않은 경우 Amazon S3는 원본 객체의 스토리지 클래스를 사용하여 객체 복제본을 생성합니다.

Amazon S3에서 지원하는 스토리지 클래스를 지정할 수 있습니다(GLACIER 스토리지 클래스 제외). 객체를 GLACIER 스토리지 클래스로 이전하려면 수명 주기 구성을 사용합니다. 수명 주기 관리에 대한 자세한 내용은 객체 수명 주기 관리를 참조하십시오. 스토리지 클래스에 대한 자세한 정보는 스토리지 클래스를 참조하십시오.

예 2: 두 가지 규칙으로 이루어진 복제 구성

다음 복제 구성을 고려합니다.

Copy
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <Prefix>Tax</Prefix> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> ... </Rule> <Rule> <Prefix>Project</Prefix> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> ... </Rule> </ReplicationConfiguration>

복제 구성에서:

  • 각 규칙은 다른 키 이름 접두사를 지정하여, 원본 버킷에서 해당 규칙이 적용되는 개별 객체 세트를 식별합니다. 그러면 Amazon S3에서는 특정 키 접두사를 포함하는 객체만 복제합니다. 예를 들어 Amazon S3는 키 이름이 Tax/doc1.pdfProject/project1.txt인 객체를 복제하지만, 키 이름이 PersonalDoc/documentA인 객체는 복제하지 않습니다.

  • 두 규칙 모두 동일한 대상 버킷을 지정합니다.

  • 두 규칙이 모두 활성화됩니다.

아래와 같이 겹치는 접두사는 지정할 수 없습니다.

Copy
<ReplicationConfiguration> <Role>arn:aws:iam::AcctID:role/role-name</Role> <Rule> <Prefix>TaxDocs</Prefix> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> </Rule> <Rule> <Prefix>TaxDocs/2015</Prefix> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::destinationbucket</Bucket> </Destination> </Rule> </ReplicationConfiguration>

두 규칙이 겹치는 접두사 Tax/Tax/2015를 지정하고 있는데 이는 허용되지 않습니다.

예 3: 예제 안내

동일한 AWS 계정에서 원본과 대상 버킷을 모두 소유한 경우, Amazon S3 콘솔로 교차 리전 복제를 설정할 수 있습니다. 원본과 대상 버킷 모두 버전 관리가 활성화되어 있다면 콘솔로 원본 버킷에 복제 구성을 추가할 수 있습니다. 자세한 내용은 다음 주제를 참조하십시오.

다른 AWS 계정에서 소유한 버킷에 대한 교차 리전 복제 설정

교차 계정 시나리오에서 복제 구성을 설정할 경우 대상 버킷 소유자는 이전 단원에 간략히 설명된 구성 작업 외에도 원본 버킷 소유자에게 복제 작업을 수행할 권한을 부여하는 버킷 정책도 추가해야 합니다.

Copy
{ "Version":"2008-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"1", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::destinationbucket/*" }, { "Sid":"2", "Effect":"Allow", "Principal":{ "AWS":"SourceBucket-AcctID" }, "Action":"s3:List*", "Resource":"arn:aws:s3:::destinationbucket" } ] }

관련 예제는 연습 2: 원본과 대상 버킷을 서로 다른 AWS 계정이 소유하는 교차 리전 복제 구성 단원을 참조하십시오.

원본 버킷에 있는 객체에 태그가 지정된 경우, 다음에 주의하십시오.

  • 원본 버킷 소유자가 객체 태그를 복사할 수 있도록 s3:GetObjectVersionTaggings3:ReplicateTags 작업 권한을 Amazon S3에 부여하는 경우(IAM 역할을 통해), Amazon S3가 객체와 함께 객체 태그를 복제하게 됩니다. IAM 역할에 대한 자세한 내용은 IAM 역할 생성 단원을 참조하십시오.

  • 대상 버킷 소유자가 태그 복제를 원하지 않는 경우, 소유자는 다음의 명령문을 버킷 정책에 추가해 s3:ReplicateTags 작업에 대한 권한을 명시적으로 거부할 수 있습니다.

    Copy
    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-AcctID:root" }, "Action":["s3:ReplicateTags"], "Resource":"arn:aws:s3:::destinationbucket/*" } ] ...

복제본 소유권 변경

필요할 경우 복제본 소유권을 대상 버킷을 소유한 AWS 계정으로 변경하도록 Amazon S3에 지시할 수도 있습니다. 이를 복제 구성의 소유자 재정의 옵션이라고도 합니다. 자세한 내용은 교차 리전 복제 추가 구성: 복제본 소유자 변경 단원을 참조하십시오.

교차 리전 복제(CRR)

복제 가능한 객체와 복제 불가능한 객체

연습 1: 원본과 대상 버킷을 동일한 AWS 계정이 소유한 교차 리전 복제 구성

연습 2: 원본과 대상 버킷을 서로 다른 AWS 계정이 소유하는 교차 리전 복제 구성

교차 리전 복제 상태 찾기

Amazon S3의 교차 리전 복제 문제 해결