메뉴
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개 이상의 최신이 아닌 객체 버전을 유지합니다.) 자세한 내용은 S3 버킷에 대한 수명 주기 정책을 생성하려면 어떻게 해야 합니까?(출처: 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 계정이 소유한 교차 리전 복제 구성

이 페이지에서: