복제 구성 - Amazon Simple Storage Service

복제 구성

Amazon S3는 복제 구성을 XML로 저장합니다. 복제 구성 XML 파일에서 AWS Identity and Access Management(IAM) 규칙과 하나 이상의 규칙을 지정합니다.

<ReplicationConfiguration> <Role>IAM-role-ARN</Role> <Rule> ... </Rule> <Rule> ... </Rule> ... </ReplicationConfiguration>

Amazon S3는 사용자가 부여한 권한 없이 객체를 복제할 수 없습니다. 복제 구성에서 지정한 IAM 역할에 권한을 부여합니다. Amazon S3는 사용자를 대신하여 객체를 복제하기 위해 IAM 역할을 맡습니다. 먼저 IAM 역할에 필요한 권한을 부여해야 합니다. 권한 관리에 대한 자세한 내용은 권한 설정 단원을 참조하십시오.

다음 시나리오에서는 복제 구성에 한 가지 규칙을 추가합니다.

  • 모든 객체를 복제하려는 경우

  • 객체의 하위 집합 하나를 복제하려는 경우. 규칙에 필터를 추가하여 객체 하위 집합을 식별하는 경우 필터에서 객체 키 접두사, 태그 또는 이 두 가지를 모두 지정하여 객체에서 규칙이 적용될 하위 집합을 식별합니다.

다른 객체의 하위 집합을 복제하려면 복제 구성에 여러 규칙을 추가할 수 있습니다. 각 규칙에서 다른 객체 하위 집합을 선택하는 필터를 지정합니다. 예를 들어 tax/ 또는document/ 키 접두사를 갖는 객체를 복제하도록 선택할 수 있습니다. 이렇게 하려면 두 가지 규칙을 추가합니다. 하나는 tax/ 키 접두사 필터를 지정하고 다른 하나는 document/ 키 접두사를 지정합니다.

다음 섹션에서 정보를 추가로 제공합니다.

기본 규칙 구성

각 규칙은 규칙의 상태 및 우선 순위를 포함해야 합니다. 규칙은 삭제 마커를 복제할지 여부를 나타내야 합니다.

  • StatusEnabled 또는 Disabled 값을 사용하여 규칙이 사용 또는 사용 중지되는지 여부를 나타냅니다. 규칙이 사용 중지되면 Amazon S3는 규칙에 지정된 작업을 수행하지 않습니다.

  • Priority은(는) 둘 이상의 복제 규칙이 충돌할 때마다 어떤 규칙의 우선 순위가 높은지를 나타냅니다. Amazon S3는 모든 복제 규칙에 따라 객체 복제를 시도합니다. 그러나 동일한 대상 버킷이 있는 규칙이 둘 이상인 경우, 우선 순위가 가장 높은 규칙에 따라 객체가 복제됩니다. 숫자가 클수록 우선 순위가 높아집니다.

  • DeleteMarkerReplicationEnabled 또는 Disabled 값을 사용하여 삭제 마커를 복제할지 여부를 나타냅니다.

대상 구성에서는 Amazon S3가 객체를 복제할 버킷의 이름을 제공해야 합니다.

다음 예제는 V2 규칙에 대한 최소 요구 사항을 보여줍니다. 이전 버전과의 호환성을 위해 Amazon S3는 XML V1 형식을 계속 지원합니다. 자세한 정보는 이전 버전과의 호환성을 참조하십시오.

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Filter> <Prefix></Prefix> </Filter> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination>       <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> </Destination> </Rule> <Rule> ... </Rule> ... ...

또한 다른 구성 옵션도 지정할 수도 있습니다. 예를 들어 원본 객체의 스토리지 클래스와 다른 객체 복제본 스토리지 클래스를 사용할 수 있습니다.

선택 사항: 필터 지정

객체에서 규칙이 적용되는 하위 집합을 선택하려면 옵션 필터를 추가합니다. 객체 키 접두사, 객체 태그 또는 이 두 가지를 모두 사용하여 필터를 지정할 수 있습니다. 키 접두사와 객체 태그를 모두 사용하여 필터링하는 경우 Amazon S3는 논리 AND 연산자를 사용하여 필터를 조합합니다. 즉, 규칙은 특정 키 접두사와 특정 태그를 가진 객체의 하위 집합에 적용됩니다.

객체 키 접두사를 기준으로 필터링

객체 키 접두사를 기반으로 한 필터를 사용하여 규칙을 지정하려면 다음 코드를 사용합니다. 접두사는 하나만 지정할 수 있습니다.

<Rule> ... <Filter> <Prefix>key-prefix</Prefix> </Filter> ... </Rule> ...

객체 태그를 기준으로 필터링

객체 태그를 기반으로 한 필터를 사용하여 규칙을 지정하려면 다음 코드를 사용합니다. 객체 태그는 하나 이상 지정할 수 있습니다.

<Rule> ... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> ... </Rule> ...

키 접두사 및 객체 태그로 필터링

키 접두사와 객체 태그가 조합된 규칙 필터를 지정하려면 다음 코드를 사용합니다. And 상위 요소에서 이러한 필터를 래핑합니다. Amazon S3는 논리적 AND 작업을 수행하여 이들 필터를 조합합니다. 즉, 규칙은 특정 키 접두사와 특정 태그를 모두 가진 객체의 하위 집합에 적용됩니다.

<Rule> ... <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </Filter> ... </Rule> ...
참고

빈 필터 태그가 있는 규칙을 지정하면 규칙이 버킷의 모든 객체에 적용됩니다.

추가 대상 구성

대상 구성에서는 Amazon S3가 객체를 복제할 버킷을 지정합니다. 한 원본 버킷에서 하나 이상의 대상 버킷으로 객체를 복제하도록 복제를 구성할 수 있습니다.

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> </Destination> ...

<Destination> 요소에 다음 옵션을 추가할 수 있습니다.

스토리지 클래스 지정

객체 복제본에 대해 스토리지 클래스를 지정할 수 있습니다. 기본적으로 Amazon S3는 다음 예제와 같이 원본 객체의 스토리지 클래스를 사용하여 객체 복제본을 생성합니다.

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <StorageClass>storage-class</StorageClass> </Destination> ...

여러 대상 버킷 추가

다음과 같이 단일 복제 구성에서 여러 대상 버킷을 추가할 수 있습니다.

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <ID>Rule-2</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled-or-Disabled</Status> </DeleteMarkerReplication> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket> </Destination> </Rule> ...

여러 대상 버킷이 있는 각 복제 규칙에 대해 서로 다른 파라미터 지정

단일 복제 구성에서 여러 대상 버킷을 추가할 때 다음과 같이 각 복제 규칙에 대해 서로 다른 파라미터를 지정할 수 있습니다.

... <Rule> <ID>Rule-1</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <ID>Rule-2</ID> <Status>Enabled-or-Disabled</Status> <Priority>integer</Priority> <DeleteMarkerReplication> <Status>Enabled</Status> </DeleteMarkerReplication> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <ReplicationTime> <Status>Enabled</Status> <Time> <Minutes>15</Minutes> </Time> </ReplicationTime> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET2</Bucket> </Destination> </Rule> ...

복제본 소유권 변경

소스 버킷과 대상 버킷을 동일한 계정에서 소유하지 않는 경우 복제본의 소유권을 대상 버킷을 소유한 AWS 계정로 변경할 수 있습니다. 이렇게 하려면 AccessControlTranslation 요소를 추가합니다. 이 요소는 Destination 값을 가져옵니다.

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> ...

복제 구성에 AccessControlTranslation 요소를 추가하지 않으면 소스 객체를 소유한 계정과 동일한 AWS 계정에서 복제본을 소유합니다. 자세한 정보는 복제본 소유자 변경을 참조하십시오.

S3 복제 시간 제어 사용 설정

복제 구성에서 S3 Replication Time Control(S3 RTC)을 사용 설정할 수 있습니다. S3 RTC는 대부분의 객체를 몇 초 만에 복제하고, 이러한 객체의 99.99%를 15분 내에 복제합니다(서비스 수준 계약에 따라).

참고

<Minutes>15</Minutes> 값은 EventThresholdTime에만 허용됩니다.

... <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <Metrics> <Status>Enabled</Status> <EventThreshold> <Minutes>15</Minutes> </EventThreshold> </Metrics> <ReplicationTime> <Status>Enabled</Status> <Time> <Minutes>15</Minutes> </Time> </ReplicationTime> </Destination> ...

자세한 정보는 S3 Replication Time Control(S3 RTC)을 사용하여 규정 준수 요구 사항 충족을 참조하십시오. API 예제는 Amazon Simple Storage Service API 참조PutBucketReplication을 참조하십시오.

AWS KMS를 사용하여 서버 측 암호화로 생성된 객체 복제

AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 사용하는 서버 측 암호화로 생성되는 객체가 소스 버킷에 포함될 수 있습니다. 기본적으로 Amazon S3는 이러한 객체를 복제하지 않습니다. 필요하다면 Amazon S3에 이러한 객체를 복제하도록 지시할 수 있습니다. 이렇게 하려면 먼저 SourceSelectionCriteria 요소를 추가하여 이 기능을 명시적으로 선택합니다. 그런 다음 AWS KMS key(대상 버킷의 AWS 리전용)를 제공하여 객체 복제본 암호화에 사용합니다. 다음 예제에서는 이러한 요소를 지정하는 방법을 보여줍니다.

... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ...

자세한 정보는 서버 측 암호화(SSE-C, SSE-S3, SSE-KMS)를 사용하여 생성된 객체 복제을 참조하십시오.

예제 복제 구성

시작하려면, 다음 예제 복제 구성을 적절히 버킷에 추가할 수 있습니다.

중요

버킷에 복제 구성을 추가하려면 iam:PassRole 권한이 있어야 합니다. 이 권한을 사용하면 Amazon S3에 복제 권한을 부여하는 IAM 역할을 전달할 수 있습니다. 복제 구성 XML의 Role 요소에서 사용되는 Amazon 리소스 이름(ARN)을 제공하여 IAM 역할을 지정합니다. 자세한 내용은 IAM 사용 설명서에서 사용자에게 AWS 서비스에 역할을 전달할 권한 부여를 참조하세요.

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

다음 기본 복제 구성은 한 규칙을 지정합니다. 이 규칙은 Amazon S3가 맡을 수 있는 IAM 역할과 객체 복제본의 단일 대상 버킷을 지정합니다. Status 값이 Enabled인 경우 이 규칙이 유효한 상태임을 나타냅니다.

<?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> <Destination><Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

복제할 객체 하위 집합을 선택하려면 필터를 추가할 수 있습니다. 다음 구성에서 필터는 객체 키 접두사를 지정합니다. 이 규칙은 키 이름에 접두사 Tax/가 포함된 객체에 적용됩니다.

<?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> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax/</Prefix> </Filter> <Destination><Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

Filter 요소를 지정하는 경우 PriorityDeleteMarkerReplication 요소도 포함시켜야 합니다. 이 예제에서는 규칙이 하나뿐이므로 Priority는 관련이 없습니다.

다음 구성에서 필터는 하나의 접두사 두 개의 태그를 지정합니다. 이 규칙은 객체에서 지정된 접두사와 태그가 있는 하위 집합에 적용됩니다. 구체적으로, 이 규칙은 키 이름에 Tax/ 접두사가 포함되고 두 개의 지정된 객체 태그가 있는 객체에 적용됩니다. 규칙은 단 하나이므로 Priority가 적용되지 않습니다.

<?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> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <And> <Prefix>Tax/</Prefix> <Tag> <Tag> <Key>tagA</Key> <Value>valueA</Value> </Tag> </Tag> <Tag> <Tag> <Key>tagB</Key> <Value>valueB</Value> </Tag> </Tag> </And> </Filter> <Destination><Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

다음과 같이 객체 복제본에 대해 스토리지 클래스를 지정할 수 있습니다.

<?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> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket> <StorageClass>storage-class</StorageClass> </Destination> </Rule> </ReplicationConfiguration>

Amazon S3가 지원하는 모든 스토리지 클래스를 지정할 수 있습니다.

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

다음 복제 구성에서,

  • 각 규칙은 객체의 고유한 하위 집합에 적용되도록 서로 다른 키 접두사를 필터링합니다. 예를 들어 Amazon S3는 키 이름이 Tax/doc1.pdfProject/project1.txt인 객체는 복제하지만, 키 이름이 PersonalDoc/documentA인 객체는 복제하지 않습니다.

  • 규칙이 서로 다른 객체 집합에 적용되므로 규칙 우선 순위는 상관이 없습니다. 다음 예제는 규칙 우선 순위가 적용되면 발생하는 상황을 보여 줍니다.

  • 두 번째 규칙은 객체 복제본에 대한 S3 Standard-IA 스토리지 클래스를 지정합니다. Amazon S3는 해당 객체 복제본에 대해 지정된 스토리지 클래스를 사용합니다.

<?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> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> ... </Rule> <Rule> <Status>Enabled</Status> <Priority>2</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>Project</Prefix> </Filter> <Status>Enabled</Status> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> <StorageClass>STANDARD_IA</StorageClass> </Destination> ... </Rule> </ReplicationConfiguration>

예 3: 접두사가 중첩되는 두 가지 규칙으로 이루어진 복제 구성

이 구성에는 star/starship과 같이 중첩되는 키 접두사를 포함하는 필터를 지정하는 규칙이 두 개 있습니다. 두 규칙은 키 이름이 starship-x인 객체에 모두 적용됩니다. 이 경우, Amazon S3는 규칙 우선 순위를 사용하여 어느 규칙을 적용할지 결정합니다. 숫자가 클수록 우선 순위가 높아집니다.

<ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <Status>Enabled</Status> <Priority>1</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>star</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> <Rule> <Status>Enabled</Status> <Priority>2</Priority> <DeleteMarkerReplication> <Status>string</Status> </DeleteMarkerReplication> <Filter> <Prefix>starship</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET1</Bucket> </Destination> </Rule> </ReplicationConfiguration>

예 4: 예제 안내

예제 안내에 대해서는 연습: 복제 구성 예제을 참조하십시오.

복제 구성의 XML 구조에 대한 자세한 내용은 Amazon Simple Storage Service API 참조PutBucketReplication을 참조하십시오.

이전 버전과의 호환성

최신 버전의 복제 구성 XML은 V2입니다. XML V2 복제 구성은 규칙에 대한 Filter 요소 그리고 S3 Replication Time Control(S3 RTC)을 지정하는 규칙을 포함하는 구성입니다.

복제 구성 버전을 보려면 GetBucketReplication API 작업을 사용할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API 참조GetBucketReplication을 참조하세요.

이전 버전과의 호환성을 위해 Amazon S3는 XML V1 복제 구성을 계속 지원합니다. XML V1 복제 구성을 사용한 경우, 이전 버전과의 호환성에 영향을 미치는 다음 문제를 고려하세요.

  • 복제 구성 XML V2는 규칙에 대한 Filter 요소를 포함합니다. Filter 요소를 사용하면 객체 키 접두사, 태그 또는 이 두 가지를 기반으로 객체 필터를 지정하여 규칙이 적용되는 객체의 범위를 설정할 수 있습니다. 복제 구성 XML V1은 키 접두사를 기반으로 한 필터링만 지원합니다. 이 경우 다음 예제와 같이 Rule 요소의 하위 요소로 Prefix를 직접 추가합니다.

    <?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>key-prefix</Prefix> <Destination><Bucket>arn:aws:s3:::DOC-EXAMPLE-BUCKET</Bucket></Destination> </Rule> </ReplicationConfiguration>

    이전 버전과의 호환성을 위해 Amazon S3는 V1 구성을 계속 지원합니다.

  • 객체 버전 ID를 지정하지 않고 원본 버킷에서 객체를 삭제할 경우 Amazon S3는 삭제 마커를 추가합니다. 복제 구성 XML V1을 사용하는 경우 Amazon S3는 사용자 작업의 결과로 발생한 삭제 마커를 복제합니다. 즉, Amazon S3는 사용자가 객체를 삭제하는 경우에만 삭제 마커를 복제합니다. Amazon S3에서 만료된 객체를 제거하면(수명 주기 작업의 일부로) Amazon S3는 삭제 마커를 복제하지 않습니다.

    V2 복제 구성에서 태그 기반 규칙에 대한 삭제 마커 복제를 사용 설정할 수 있습니다. 자세한 정보는 버킷 간 삭제 마커 복제을 참조하십시오.