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

교차 리전 복제 설정 방법

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

중요

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

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

  • Amazon S3에게 사용자 대신 객체를 복제할 권한을 부여하는 IAM 역할을 만듭니다.

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

또한, 서로 다른 두 AWS 계정이 원본과 대상 버킷을 소유한 경우, 대상 버킷 소유자는 원본 버킷 소유자에게 복제 작업 권한을 부여하는 버킷 정책도 추가해야 합니다.

IAM 역할 생성

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

  • Amazon S3에 다음과 같은 역할을 위임하는 신뢰 정책

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

    참고

    정책의 Principal에서는 Amazon S3를 식별합니다. IAM 역할에 대한 자세한 내용은 IAM 사용 설명서IAM 역할 단원을 참조하십시오.

  • 사용자 대신 복제 작업을 수행할 역할 권한을 부여하는 액세스 정책. 다음과 같은 액세스 정책으로 이러한 권한을 부여합니다.

    • Amazon S3가 복제 구성을 검색하고 버킷 목록을 만들 수 있도록 하는 원본 버킷에 대한 s3:GetReplicationConfigurations3:ListBucket 권한(현재의 권한 모델은 삭제 마커에 액세스하기 위해 s3:ListBucket 권한이 필요함).

    • 버전 관리가 활성화된 원본 버킷의 모든 객체에 대한 s3:GetObjectVersions3:GetObjectVersionAcl 권한. 이를 통해 Amazon S3는 특정 객체 버전 및 그에 대한 ACL을 찾을 수 있습니다.

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

    • s3:GetObjectVersionTagging 권한은 S3가 복제 대상 객체 태그를 읽을 수 있도록 하는 권한입니다(객체 태그 지정 참조). S3가 이 권한을 가지고 있지 않을 경우, 객체는 복제하지만 객체 태그는 복제하지 않습니다.

    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:ReplicateObject 작업 권한 또한 객체 태그 복제를 허용하는 권한입니다. 따라서 대상 버킷에 s3:ReplicateObject에 대한 권한이 부여될 경우, S3는 객체 태그까지 복제하게 됩니다(s3:ReplicateTags 작업에 대한 권한을 명시적으로 부여할 필요는 없습니다).

복제 구성 추가

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

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

다음 복제 구성에는 한 가지 규칙이 있습니다. 이 규칙은 Amazon S3에 모든 객체를 지정된 대상 버킷으로 복제하도록 합니다. 규칙은 모든 객체를 의미하는 빈 접두사를 지정합니다. 또한, 이 구성은 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></Destination> </Rule> </ReplicationConfiguration>

<Rule>에 스토리지 클래스를 지정하지 않은 경우 Amazon S3는 원본 객체의 스토리지 클래스를 사용하여 객체 복제본을 생성합니다. 다음과 같이 Amazon S3에서 복제본을 생성하는 데 사용할 스토리지 클래스를 선택적으로 지정할 수 있습니다. <StorageClass> 요소는 비워 둘 수 없습니다.

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>

GLACIER 스토리지 클래스를 제외하고 Amazon S3에서 지원되는 모든 스토리지 클래스를 지정할 수 있습니다. 수명 주기를 사용하여 객체를 GLACIER 스토리지 클래스로만 이전할 수 있습니다. 자세한 내용은 PUT Bucket replication을 참조하십시오. 수명 주기 관리에 대한 자세한 내용은 객체 수명 주기 관리를 참조하십시오. 스토리지 클래스에 대한 자세한 정보는 스토리지 클래스를 참조하십시오.

예 2: 두 가지 규칙(각각 키 이름 접두사를 지정함)으로 이루어진 복제 구성

다음 복제 구성은 두 규칙을 지정합니다. 첫 번째 규칙은 Amazon S3에 키 이름 접두사가 TaxDocs/인 객체를 복제하도록 합니다. 두 번째 규칙은 Amazon S3에 키 이름 접두사가 ProjectDocs/인 객체를 복제하도록 합니다. 예를 들어 Amazon S3는 키 이름이 TaxDocs/doc1.pdfProjectDocs/project1.txt인 객체를 복제하지만, 키 이름이 PersonalDoc/documentA인 객체는 복제하지 않습니다. 두 규칙 모두 동일한 대상 버킷을 지정한다는 점을 유의하십시오.

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>TaxDocs</Prefix> ... </Rule> <Rule> <Prefix>ProjectDocs</Prefix> ... </Rule> </ReplicationConfiguration>

또한, 겹치는 접두사는 지정할 수 없다는 점을 유의하십시오. 다음 예로 든 구성에서는 두 규칙이 겹치는 접두사 TaxDocs/TaxDocs/2015를 지정하고 있는데 이는 허용되지 않습니다.

Copy
<ReplicationConfiguration> <Role>arn:aws:iam::account-id: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>

버킷에 복제 구성을 추가하려면, 원본과 대상 버킷의 소유자가 누군지에 따라 두 가지 시나리오가 가능합니다.

시나리오 1: 동일한 AWS 계정이 버킷을 소유한 경우

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

시나리오 2: 서로 다른 AWS 계정이 버킷을 소유한 경우

서로 다른 두 AWS 계정에서 원본과 대상 버킷을 소유한 경우, 콘솔로 복제 구성을 추가할 수 없습니다. 이는 콘솔에서 다른 AWS 계정이 소유한 대상 버킷을 지정할 수 없기 때문입니다. 대신 AWS SDK나 AWS Command Line Interface를 이용한 프로그래밍 방법으로 복제 구성을 추가합니다. 이렇게 하려면 복제 구성을 XML로 지정해야 합니다. 다음은 복제 구성의 예입니다.

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

구성으로 Amazon S3에게 키 접두사가 TaxDocs/인 객체를 destinationbucket으로 복제하게 합니다. 또한, 이 구성으로 Amazon S3가 수임해 사용자 대신 객체를 복제할 IAM 역할을 지정합니다. XML 구조에 대한 자세한 내용은 Amazon Simple Storage Service API ReferencePUT Bucket replication을 참조하십시오.

다른 AWS 계정이 대상 버킷을 소유하고 있어 대상 버킷 소유자는 원본 버킷 소유자에게도 다음과 같이 객체를 복제(복제 또는 삭제)할 권한을 부여해야 합니다.

Copy
{ "Version":"2008-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucketOwnerAcctID:root" }, "Action":["s3:ReplicateObject", "s3:ReplicateDelete"], "Resource":"arn:aws:s3:::destination bucket/*" } ] }

대상 버킷에 관한 이 버킷 정책으로 원본 버킷 소유자에게 대상 버킷에 대한 Amazon S3의 객체 작업(s3:ReplicateObjects3:ReplicateDelete)을 위한 권한을 부여합니다.

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

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

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

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

    Copy
    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucketOwnerAcctID:root" }, "Action":["s3:ReplicateTags"], "Resource":"arn:aws:s3:::destination bucket/*" } ] ...

리전 간 복제

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

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

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

객체의 복제 상태를 확인하는 방법

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