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

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

이 연습에서는 한 계정이 소유한 원본 버킷에 교차 리전 복제를 설정해 다른 계정 소유의 대상 버킷으로 객체를 복제합니다.

이는 한 계정에서 두 버킷을 모두 소유한 경우의 교차 리전 복제와 동일한 프로세스입니다. 단, 대상 버킷 소유자가 원본 버킷 소유자에게 복제 작업 권한을 위임하는 버킷 정책 생성 단계—가 필요합니다.

이 연습에서는 IAM 역할을 생성하고 원본 버킷에 복제 구성을 설정하는 단계를 제외하고는 콘솔로 모든 단계를 수행합니다. AWS CLI 또는 Java용 AWS SDK를 사용하여 이러한 단계를 수행합니다.

  1. 두 개의 버킷을 만듭니다.

    1. AWS 리전에 원본 버킷을 생성합니다. 예를 들면 계정 A의 오리건(us-west-2)과 같습니다. 자세한 내용은 S3 버킷을 생성하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    2. 다른 AWS 리전에 대상 버킷을 생성합니다. 예를 들어 Account B의 미국 동부(버지니아 북부) 리전(us-east-1)입니다.

  2. 두 버킷의 버전 관리를 활성화합니다. 지침은 S3 버킷의 버전 관리 기능을 활성화하거나 일시 중지하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    중요

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

  3. 대상 버킷에 다음 버킷 정책을 추가해 원본 버킷 소유자에게 복제 작업 권한을 허용합니다.

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

    지침은 S3 버킷 정책을 추가하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

  4. 계정 A에서 IAM 역할을 생성합니다. 그러면 다음 단계에서 원본 버킷에 복제 구성을 추가할 때 계정 A에서 이 역할을 지정합니다.

    AWS CLI를 사용해 이 IAM 역할을 생성합니다. AWS CLI를 설정하는 방법에 대한 자세한 내용은 예제 안내를 위한 도구 설정을 참조하십시오.

    1. 다음 정책을 복사해 S3-role-trust-policy.json 파일에 저장합니다. 해당 정책은 Amazon S3에 역할을 수임할 권한을 부여합니다.

      Copy
      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
    2. 다음 정책을 복사해 S3-role-permissions-policy.json 파일에 저장합니다. 해당 액세스 정책은 다양한 Amazon S3 버킷과 객체 작업에 대한 권한을 부여합니다. 다음 단계에서는 사용자가 생성하는 IAM 역할에 정책을 추가합니다.

      Copy
      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersion", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }
    3. 다음 CLI 명령을 실행해 역할을 생성합니다.

      Copy
      $ aws iam create-role \ --role-name RoleForS3CrossAccountCrossRegionReplication \ --assume-role-policy-document file://S3-role-trust-policy.json
    4. 다음 CLI 명령을 실행해 정책을 생성합니다.

      Copy
      $ aws iam create-policy \ --policy-name PolicyForS3CrossAccountCrossRegionReplication \ --policy-document file://S3-role-permissions-policy.json
    5. 이전 명령의 출력 결과에서 반환된 정책 ARN을 적어 둡니다.

    6. 다음 CLI 명령을 실행해 정책과 역할을 연결합니다.

      Copy
      $ aws iam attach-role-policy \ --role-name RoleForS3CrossAccountCrossRegionReplication \ --policy-arn policy-arn

      계정 A로 Amazon S3 작업에 필요한 객체 복제에 대한 역할을 생성합니다.

  5. 계정 A에서 원본 버킷에 대한 교차 리전 복제를 활성화합니다. 복제 구성에서 Amazon S3에게 키 이름 접두사가 Tax/인 객체를 지정된 버킷으로 복제하도록 요청하는 규칙 한 개를 추가합니다. Amazon S3는 다음 예와 같이 복제 구성을 XML로 저장합니다.

    Copy
    <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::AWS-ID-Account-A:role/role-name</Role> <Rule> <Status>Enabled</Status> <Prefix>Tax</Prefix> <Destination><Bucket>arn:aws:s3:::destination-bucket</Bucket></Destination> </Rule> </ReplicationConfiguration>

    AWS CLI나 AWS SDK로 복제 구성을 원본 버킷에 추가할 수 있습니다.

    • AWS CLI 사용

      AWS CLI에서는 구성을 JSON으로 지정해야 합니다. 다음 JSON을 파일(replication.json)에 저장합니다. 사용자의 버킷 이름과 IAM 역할 ARN을 제공해야 합니다.

      Copy
      { "Role": "arn:aws:iam::AWS-ID-Account-A:role/role-name", "Rules": [ { "Prefix": "Tax", "Status": "Enabled", "Destination": { "Bucket": "arn:aws:s3:::destination-bucket" } } ] }

      그런 다음, CLI 명령을 실행해 복제 구성을 원본 버킷에 추가합니다.

      Copy
      $ aws s3api put-bucket-replication \ --bucket source-bucket \ --replication-configuration file://replication.json

      AWS CLI를 설정하는 자세한 방법은 예제 안내를 위한 도구 설정을 참조하십시오.

      계정 A는 get-bucket-replication 명령을 사용해 복제 구성을 검색할 수 있습니다.

      Copy
      $ aws s3api get-bucket-replication \ --bucket source-bucket
    • Using the AWS SDK for Java.

      코드에 대한 예로는 Java용 AWS SDK로 교차 리전 복제 설정 방법을 참조하십시오.

  6. 다음과 같이 구성을 시험합니다.

    • 계정 A 자격 증명으로 원본 버킷에 객체를 생성하고 Amazon S3가 계정 B 소유의 대상 버킷에 객체를 복제했는지 확인합니다. Amazon S3가 객체 복제에 소요하는 시간은 객체 크기에 따라 다릅니다. 복제 상태를 확인하는 데 대한 자세한 내용은 객체의 복제 상태를 확인하는 방법을 참조하십시오.

      참고

      원본 버킷에 객체를 업로드하려면 객체 키 이름에 접두사 Tax가 반드시 있어야 합니다(예: Tax/document.pdf). 계정 A가 원본 버킷에 추가한 복제 구성에 따라, Amazon S3는 접두사 Tax가 있는 객체만 복제합니다.

    • 원본 버킷의 객체 ACL을 업데이트하고, 대상 버킷에 변경 내용이 나타나는지 확인합니다.

      지침은 객체에 대한 권한은 어떻게 설정하나요?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    • 객체의 메타데이터를 업데이트하고 대상 버킷에 변경 내용이 나타나는지 확인합니다.

      지침은 S3 객체에 메타데이터를 추가하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    복제본은 원본 버킷의 객체와 동일합니다.

리전 간 복제

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

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

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

이 페이지에서: