다른 AWS 계정에서 제 Amazon S3 버킷에 업로드한 객체에 액세스할 수 없는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 11월 10일

다른 AWS 계정의 AWS Identity and Access Management(IAM) 사용자가 제 Amazon Simple Storage Service(Amazon S3) 버킷에 객체를 업로드했습니다. 해당 객체에 액세스하려고 하면 403 액세스 거부 오류가 나타납니다. 해결하려면 어떻게 해야 하나요?

간략한 설명

기본적으로 S3 객체는 해당 객체를 업로드한 AWS 계정의 소유입니다. 이는 버킷을 다른 계정에서 소유하는 경우에도 마찬가지입니다. 객체에 액세스하려면 객체 소유자가 사용자(버킷 소유자)에게 명시적으로 액세스 권한을 부여해야 합니다.

객체 소유자는 객체의 ACL(액세스 제어 목록)을 업데이트하여 버킷 소유자에게 해당 객체의 모든 권한을 부여할 수 있습니다. 객체 소유자는 넣기/복사 작업 중에 또는 객체가 버킷에 추가된 후에 ACL을 업데이트할 수 있습니다.

해결 방법

넣기 또는 복사 작업 중에 액세스 권한 부여

넣기 또는 복사 작업 중에 객체 소유자는 객체의 ACL이 버킷 소유자에게 모든 권한을 제공하도록 지정할 수 있습니다.

입력 작업의 경우, 객체 소유자가 이 명령을 실행하면 됩니다.

aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하십시오.

객체 하나의 복사 작업에서는 객체 소유자가 다음 명령 중 하나를 실행하면 됩니다.

aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control

– 또는 –

aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control

여러 객체의 복사 작업에서는 객체 소유자가 이 명령을 실행하면 됩니다.

aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive

객체가 버킷에 추가된 후 액세스 권한 부여

객체가 이미 다른 계정의 버킷에 있는 경우 객체 소유자는put-object-acl 명령을 사용하여 버킷 소유자에게 액세스 권한을 부여할 수 있습니다.

aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control

객체가 버킷 소유자에게 모든 권한을 부여해야 함

다른 계정에서 본인 버킷에 업로드한 모든 객체는 ACL이 "bucket-owner-full-control"로 설정되어 있어야 한다고 버킷 정책을 통해 요구할 수 있습니다. 이에 대한 예를 보려면 다른 AWS 계정에서 제 Amazon S3 버킷에 객체를 업로드할 때 해당 객체의 소유권을 부여하도록 요구하려면 어떻게 해야 합니까?를 참조하십시오.