내용으로 건너뛰기

다른 AWS 계정에서 Amazon S3 객체를 복사하려면 어떻게 하나요?

4분 분량
0

AWS 계정 전체에 Amazon Simple Storage Service(Amazon S3) 객체를 복사하고 대상 계정이 복사한 객체를 소유하고 있는지 확인하고 싶습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

객체를 업로드하는 AWS 계정이 Amazon S3의 객체를 자동으로 소유하지 않습니다. S3 객체 소유권 설정을 변경할 때는 버킷 소유자 적용 설정을 사용하는 것이 좋습니다. 버킷 소유자 적용 설정은 Amazon S3에 저장된 데이터에 대한 액세스 관리를 간소화합니다. 하지만 이 옵션은 모든 버킷 액세스 제어 목록(ACL) 및 버킷의 모든 객체에 있는 ACL을 끕니다.

S3 객체 소유권에서 버킷 소유자 적용 설정을 사용할 경우 동일한 버킷 소유자가 Amazon S3 버킷의 모든 객체를 자동으로 소유하게 됩니다. 기존 버킷의 경우 ACL을 명시적으로 해제하지 않으면 S3 객체를 업로드하는 계정이 해당 객체를 소유합니다.

기존 방법에서 ACL을 사용하여 객체를 공유하는 경우 ACL을 사용하여 객체에 액세스하는 주체를 식별하십시오. 자세한 내용은 ACL을 끄기 위한 사전 요구 사항을 참조하십시오.

ACL을 끌 수 없는 경우 버킷 정책을 조정할 수 있을 때까지 다음 단계를 완료하여 객체에 대한 소유권을 가져오십시오.

  1. 소스 계정에서 IAM ID에 교차 계정 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 고객 관리형 정책을 생성합니다. IAM 사용자는 소스 버킷에서 객체를 검색하고 대상 버킷에 해당 객체를 넣을 수 있는 액세스 권한이 있어야 합니다.
    정책 예시:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET",
                    "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:PutObject",
                    "s3:PutObjectAcl"
                ],
                "Resource": [
                    "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET",
                    "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*"
                ]
            }
        ]
    }

    참고: 위의 예제 IAM 정책에는 객체를 나열하고 계정 전체에 걸쳐 버킷에 객체를 복사하는 데 필요한 최소 권한만 포함되어 있습니다. 사용 사례에 따라 허용된 S3 작업을 사용자 지정합니다. 예를 들어 사용자가 객체 태그가 있는 객체를 복사해야 하는 경우 s3:GetObjectTagging에 대한 권한도 부여해야 합니다. 권한 오류가 발생하면 관리자 권한으로 IAM 관련 문제를 격리하십시오.

  2. 소스 계정에서 고객 관리형 정책을 IAM ID에 연결합니다.

  3. 대상 계정에서 대상 버킷의 S3 객체 소유권버킷 소유자 선호로 설정합니다. 이제 ACL이 bucket-owner-full-control로 설정된 상태에서 업로드한 새 객체를 대상 계정이 자동으로 소유합니다.

  4. 대상 계정에서 대상의 버킷 정책을 수정하여 소스 계정에 객체 업로드 권한을 부여합니다. 또한 ACL을 bucket-owner-full-control로 설정하기 위해 객체 업로드를 요구하는 조건을 버킷 정책에 포함하십시오.
    정책 예시:

    {
        "Version": "2012-10-17",
        "Id": "Policy1611277539797",
        "Statement": [
            {
                "Sid": "Stmt1611277535086",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::222222222222:user/Jane"
                },
                "Action": "s3:PutObject",
                "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*",
                "Condition": {
                    "StringEquals": {
                        "s3:x-amz-acl": "bucket-owner-full-control"
                    }
                }
            },
            {
                "Sid": "Stmt1611277877767",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::222222222222:user/Jane"
                },
                "Action": "s3:ListBucket",
                "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET"
            }
        ]
    }

    참고: destination-DOC-EXAMPLE-BUCKET을 대상 버킷의 이름으로 바꾸고, arn:aws:iam::222222222222:user/Jane을 소스 계정의 IAM ID의 ARN으로 바꾸십시오.
    위의 예제 버킷 정책에는 필요한 ACL이 있는 개체를 업로드하는 데 필요한 최소한의 권한만 포함되어 있습니다. 사용 사례에 따라 허용된 S3 작업을 사용자 지정합니다.

  5. 소스 계정의 IAM ID가 대상 버킷에 객체를 업로드할 수 있도록 ACL을 bucket-owner-full-control로 설정해야 합니다. 예를 들어, 소스 IAM ID는 —acl 옵션과 함께 cp AWS CLI 명령을 실행해야 합니다.

    aws s3 cp s3://source-DOC-EXAMPLE-BUCKET/object.txt s3://destination-DOC-EXAMPLE-BUCKET/object.txt --acl bucket-owner-full-control

    위 예제에서 명령은 object.txt 파일을 복사합니다. 전체 폴더를 복사하려면 다음 명령을 실행합니다.

    aws s3 cp directory/ s3://bucketname/directory --recursive --acl bucket-owner-full-control
    

    참고: AccessDenied 오류가 발생하는 경우 Amazon S3의 액세스 거부(403 금지됨) 오류 문제 해결을 참조하십시오.

중요: S3 버킷에 AWS Key Management Service(AWS KMS)가 활성화된 기본 암호화가 있는 경우, AWS KMS 키 권한도 수정해야 합니다. 자세한 내용을 보려면 Amazon S3 버킷에 사용자 지정 AWS KMS 키를 사용하여 기본 암호화가 설정되어 있습니다를 참조하세요. 사용자가 버킷에서 다운로드하고 버킷에 업로드하도록 허용하려면 어떻게 해야 합니까?를 참조하십시오.

S3 버킷 간에 대량의 데이터를 복사하려면 Amazon S3 버킷에서 다른 버킷으로 대량의 데이터를 전송하는 가장 좋은 방법은 무엇입니까?를 참조하십시오. 또한 대량의 데이터를 Amazon S3에 업로드할 때 성능을 최적화하려면 어떻게 해야 합니까?도 참조하십시오.

관련 정보

Amazon S3 버킷 정책의 예

예시 2: 버킷 소유자가 계정 간 버킷 권한 부여

다른 AWS 계정에서 객체를 업로드할 때 Amazon S3 버킷의 객체 소유권을 변경하려면 어떻게 해야 하나요?

리소스 기반 정책을 사용하여 다른 계정의 Amazon S3 버킷에 대한 액세스 위임