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

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

이 연습에서는 원본 버킷과 대상 버킷을 서로 다른 AWS 계정에서 소유한 교차 리전 복제를 설정합니다.

두 버킷을 서로 다른 AWS 계정에서 소유하므로 교차 리전 복제를 설정하기 위해 한 가지 추가 단계를 수행해야 합니다. 즉, 대상 버킷 소유자가 원본 버킷 소유자에게 복제 작업 권한을 위임하는 버킷 정책을 생성해야 합니다.

이 연습에서는 다음과 같은 이유로 IAM 역할을 생성하고 원본 버킷에 복제 구성을 추가하는 단계를 제외하고 모든 단계를 콘솔로 수행합니다.

  • Amazon S3 콘솔은 두 버킷을 동일한 AWS 계정에서 소유한 경우에 복제 구성 설정을 지원합니다. 하지만 교차 계정 시나리오에서는 다른 AWS 계정에서 소유한 대상 버킷을 지정해야 하고, Amazon S3 콘솔 UI는 사용자 계정에 있는 버킷만 표시합니다.

  • IAM 콘솔에서는 Amazon S3가 [AWS Service Roles] 목록에 없습니다. 필요할 경우 IAM 역할을 생성할 수 있으나 다른 서비스 역할 유형(예: AWS Lambda)을 선택할 수 있습니다. 역할을 생성한 후 역할을 맡을 수 있는 Amazon S3 서비스 보안 주체(Lambda 서비스 보안 주체 대신)를 지정하도록 신뢰 정책을 수정할 수 있습니다. 이 연습에서는 AWS CLI를 사용하여 역할을 생성합니다.

  1. 서로 다른 두 AWS 계정을 사용하여 버킷 두 개를 생성합니다. 교차 리전 복제 요구 사항에 따라 서로 다른 AWS 리전에서 이러한 버킷을 생성하고 두 버킷 모두에서 버전 관리를 활성화합니다.

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

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

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

      중요

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

  2. 원본 버킷 소유자에게 객체 복제를 허용하는 버킷 정책을 대상 버킷에 추가합니다.

    { "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 콘솔 사용 설명서)를 참조하십시오.

  3. Amazon S3에 원본 버킷 소유자를 대신하여 객체를 복제할 수 있는 권한을 부여합니다.

    원본 버킷에서 교차 리전 복제를 구성하면 Amazon S3에서 객체를 자동으로 복제합니다. 원본 버킷 소유자는 IAM 역할을 사용하여 Amazon S3에 필요한 권한을 부여할 수 있습니다. 이 단계에서는 계정 A에서 IAM 역할을 생성합니다.

    AWS CLI를 사용해 이 IAM 역할을 생성합니다. AWS CLI 설정 방법에 대한 자세한 내용은 예제 안내를 위한 도구 설정 단원을 참조하십시오. 이 연습에서는 accountAaccountB 프로필을 사용하여 AWS CLI를 구성했다고 가정합니다.

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

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

      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "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. 다음 AWS CLI 명령을 실행해 역할을 생성합니다.

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

      $ aws iam create-policy \ --policy-name crrRolePolicy \ --policy-document file://S3-role-permissions-policy.json \ --profile accountA
    5. create-policy 명령에서 반환된 정책 Amazon 리소스 이름(ARN)을 적어 둡니다.

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

      $ aws iam attach-role-policy \ --role-name crrRole \ --policy-arn policy-arn \ --profile accountA

      이제 계정 A에 Amazon S3가 맡을 수 있는 IAM 역할이 있습니다. 필요한 Amazon S3 작업에 대한 권한이 있으므로 Amazon S3는 특정 원본 버킷의 객체를 대상 버킷에 복제할 수 있습니다. 계정 A의 원본 버킷에 교차 리전 복제를 추가할 때 이 역할을 지정합니다.

  4. 다음 예제 구성과 같이 Amazon S3에 Tax/ 접두사를 가진 객체를 대상 버킷에 복제하도록 지시하는 복제 구성을 계정 A의 원본 버킷에 추가합니다.

    중요

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

    <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, Amazon S3 콘솔 또는 AWS SDK를 사용하여 복제 구성을 추가할 수 있습니다.

    • AWS CLI 사용

      AWS CLI를 사용하려면 복제 구성을 JSON으로 지정해야 합니다. 다음 JSON을 파일(replication.json)에 저장합니다.

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

      버킷 이름과 역할 ARN을 제공하여 JSON을 업데이트합니다. 그런 다음, AWS CLI 명령을 실행해 복제 구성을 원본 버킷에 추가합니다.

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

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

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

      $ aws s3api get-bucket-replication \ --bucket source-bucket \ --profile accountA
    • Amazon S3 콘솔 사용

      콘솔 사용에 대한 지침은 S3 버킷의 교차 리전 복제를 활성화하고 구성하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    • AWS SDK for Java 사용

      코드에 대한 예는 AWS SDK for Java를 사용하여 교차 리전 복제 설정 단원을 참조하십시오.

  5. 설정을 테스트합니다. 콘솔에서 다음을 수행합니다.

    • 원본 버킷에서 Tax 폴더를 생성합니다.

    • 원본 버킷의 폴더에 객체를 추가합니다.

      • Amazon S3가 계정 B에서 소유한 대상 버킷에 객체를 복제했는지 확인합니다.

      • 객체 속성에서 [Replication Status]가 "Replica"(이 객체를 복제본 객체로 식별)로 설정됩니다.

      • 객체 속성에서 권한 섹션에 권한이 표시되지 않습니다. 즉, 복제본이 여전히 원본 버킷 소유자의 소유이고 대상 버킷 소유자는 객체 복제본에 대한 권한이 없습니다. Amazon S3에 복제본 소유권을 변경하도록 지시하는 선택적 구성을 추가할 수 있습니다. 예제는 연습 3: 복제본 소유자를 대상 버킷 소유자로 변경 단원을 참조하십시오.

         복제 상태(복제본)와 텍스트 파일에 대한 권한을 보여 주는 객체 속성의 스크린샷

      Amazon S3의 객체 복제에 소요되는 시간은 객체 크기에 따라 다릅니다. 복제 상태를 확인하는 데 대한 자세한 내용은 교차 리전 복제 상태 찾기 을 참조하십시오.

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

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

    • 객체의 메타데이터를 업데이트합니다. 예를 들어, 스토리지 클래스를 변경합니다. 대상 버킷에 변경 내용이 나타나는지 확인합니다.

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

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

교차 리전 복제(CRR)

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

교차 리전 복제 상태 찾기

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

이 페이지에서: