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

연습 3: 복제본 소유자를 대상 버킷 소유자로 변경

이 연습에서는 복제본 소유자를 대상 버킷을 소유한 AWS 계정으로 변경하도록 Amazon S3에 지시하는 연습 2(연습 2: 원본과 대상 버킷을 서로 다른 AWS 계정이 소유하는 교차 리전 복제 구성)의 복제 구성을 업데이트합니다. 필요에 따라 복제본 소유권을 변경하는 방법에 대한 자세한 내용은 교차 리전 복제 추가 구성: 복제본 소유자 변경 단원을 참조하십시오.

  1. 연습 2를 완료합니다. 지침은 연습 2: 원본과 대상 버킷을 서로 다른 AWS 계정이 소유하는 교차 리전 복제 구성 단원을 참조하십시오.

  2. 다음과 같이 <AccessControlTranslation> 요소를 추가하여 복제 구성 규칙을 업데이트합니다.

    <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> <Account>destination-bucket-owner-account-id</Account> <StorageClass>storage-class</StorageClass> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>

    이 예에서는 AWS CLI 또는 AWS SDK를 사용하여 복제 구성을 추가할 수 있습니다. 콘솔에서는 다른 AWS 계정에 있는 대상 버킷 지정을 지원하지 않으므로 콘솔을 사용할 수 없습니다.

    • 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", "AccessControlTranslation" : { "Owner" : "Destination" } } } ] }

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

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

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

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

      $ aws s3api get-bucket-replication \ --bucket source-bucket \ --profile accountA
    • AWS SDK for Java 사용

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

  3. IAM 콘솔에서 생성한 IAM 역할을 선택하고 s3:ObjectOwnerOverrideToBucketOwner 작업에 대한 권한을 추가하여 연결된 권한 정책을 업데이트합니다.

    업데이트된 정책이 표시됩니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::destination-bucket/*" } ] }
  4. Amazon S3 콘솔에서 대상 버킷을 선택하고 버킷 정책을 다음과 같이 업데이트합니다.

    • 원본 객체 소유자에게 s3:ObjectOwnerOverrideToBucketOwner 작업에 대한 권한을 부여합니다.

    • 원본 버킷 소유자에게 s3:ListBuckets3:ListBucketVersions 작업에 대한 권한을 부여합니다.

    다음 버킷 정책은 추가 권한을 보여 줍니다.

    { "Version":"2008-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"1", "Effect":"Allow", "Principal":{ "AWS":"source-bucket-owner-aws-account-id" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::destinationbucket/*" }, { "Sid":"2", "Effect":"Allow", "Principal":{ "AWS":"source-bucket-owner-aws-account-id" }, "Action":[ "s3:ListBucket", "s3:ListBucketVersions" ], "Resource":"arn:aws:s3:::destinationbucket" } ] }
  5. Amazon S3 콘솔에서 복제 구성을 테스트:

    1. 원본 버킷의 Tax 폴더에 객체를 업로드합니다.

    2. 대상 버킷에 복제본이 생성되는지 확인합니다. 복제본에 대해 권한을 확인합니다. 대상 버킷 소유자는 이제 객체 복제본에 대한 모든 권한을 가집니다.