문제 해결
S3 객체 소유권에 대해 버킷 소유자 적용 설정을 적용하면 액세스 제어 목록(ACL)이 비활성화되고 버킷 소유자는 버킷의 모든 객체를 자동으로 소유합니다. ACL은 더 이상 버킷의 객체에 대한 권한에 영향을 주지 않습니다. 정책을 사용하여 권한을 부여할 수 있습니다. 모든 S3 PUT
요청은 bucket-owner-full-control
미리 준비된 ACL을 지정하거나 ACL을 지정하지 않아야 합니다. 이렇게 하지 안ㅇ흐면 요청이 실패합니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.
잘못된 ACL이 지정되거나 버킷 ACL 권한이 AWS 계정 외부의 액세스 권한을 부여하면 다음과 같은 오류 응답이 표시될 수 있습니다.
AccessControlListNotSupported
객체 소유권에 대해 버킷 소유자 적용 설정을 적용하면 ACL이 비활성화됩니다. ACL 설정 또는 ACL 업데이트 요청은 400
오류와 함께 실패하고 AccessControlListNotSupported
오류 코드를 반환합니다. ACL 읽기 요청은 계속 지원됩니다. ACL 읽기 요청은 항상 버킷 소유자에 대한 전체 제어 권한을 보여주는 응답을 반환합니다. PUT
작업에서 버킷 소유자 전체 권한 ACL을 지정하거나 ACL을 지정하지 않아야 합니다. 그렇지 않으면 PUT
작업이 실패합니다.
다음 예제 put-object
AWS CLI 명령에는 public-read
미리 제공된 ACL이 포함되어 있습니다.
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyobject-key-name
--bodydoc-example-body
--acl public-read
버킷이 버킷 소유자 적용 설정을 사용하여 ACL을 비활성화하면 작업이 실패하고 업로드하는 사용자에게 다음 오류 메시지가 표시됩니다.
PutObject 작업을 호출할 때 오류(AccessControlListNotSupported)가 발생했습니다. 버킷이 ACL을 허용하지 않습니다.
InvalidBucketAclWithObjectOwnership
버킷 소유자 적용 설정을 적용하여 ACL을 비활성화하려면 버킷 ACL이 버킷 소유자에게만 전체 제어 권한을 부여해야 합니다. 버킷 ACL은 외부 AWS 계정 또는 다른 그룹에 대한 액세스 권한을 부여할 수 없습니다. 예를 들어 CreateBucket
요청이 버킷 소유자 시행을 설정하고 외부 AWS 계정에 대한 액세스를 제공하는 버킷 ACL을 지정하는 경우 요청은 400
오류와 함께 실패하고 InvalidBucketAclWithObjectOwnership
오류 코드를 반환합니다. 마찬가지로 PutBucketOwnershipControls
요청이 다른 사람에게 권한을 부여하는 버킷 ACL이 있는 버킷에 적용되는 버킷 소유자를 설정하는 경우 요청이 실패합니다.
예 : 기존 버킷 ACL이 퍼블릭 읽기 액세스 권한 부여
예를 들어 기존 버킷 ACL이 퍼블릭 읽기 액세스 권한을 부여하는 경우 이러한 ACL 권한을 버킷 정책으로 마이그레이션하고 버킷 ACL을 기본 프라이빗 ACL로 재설정할 때까지 객체 소유권에 대해 버킷 소유자 적용 설정을 적용할 수 없습니다. 자세한 내용은 ACL 사용 중지를 위한 사전 조건 단원을 참조하십시오.
이 예제 버킷 ACL은 퍼블릭 읽기 액세스 권한을 부여합니다.
{ "Owner": { "ID": "
852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
다음 예시 put-bucket-ownership-controls
AWS CLI 명령은 객체 소유권에 대해 버킷 소유자 적용 설정을 적용합니다.
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
버킷 ACL이 퍼블릭 읽기 액세스 권한을 부여하기 때문에 요청이 실패하고 다음 오류 코드를 반환합니다.
PutBucketOwnershipControls 작업을 호출할 때 오류(InvalidBucketAclWithObjectOwnership)가 발생했습니다. 버킷은 ObjectOwnership의 BucketOwnerEnforced 설정으로 ACL을 설정할 수 없습니다.