

# 문제 해결
<a name="object-ownership-error-responses"></a>

S3 객체 소유권에 대해 버킷 소유자 적용 설정을 적용하면 액세스 제어 목록(ACL)이 비활성화되고 버킷 소유자는 버킷의 모든 객체를 자동으로 소유합니다. ACL은 더 이상 버킷의 객체에 대한 권한에 영향을 주지 않습니다. 정책을 사용하여 권한을 부여할 수 있습니다. 모든 S3 `PUT` 요청은 `bucket-owner-full-control` 미리 준비된 ACL을 지정하거나 ACL을 지정하지 않아야 합니다. 이렇게 하지 않으면 요청이 실패합니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](about-object-ownership.md) 섹션을 참조하세요.

잘못된 ACL이 지정되거나 버킷 ACL 권한이 AWS 계정 외부의 액세스 권한을 부여하면 다음과 같은 오류 응답이 표시될 수 있습니다.

## AccessControlListNotSupported
<a name="object-ownership-error-responses-acl-not-supported"></a>

객체 소유권에 대해 버킷 소유자 적용 설정을 적용하면 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 --key object-key-name --body doc-example-body --acl public-read
```

버킷이 버킷 소유자 적용 설정을 사용하여 ACL을 비활성화하면 작업이 실패하고 업로드하는 사용자에게 다음 오류 메시지가 표시됩니다.

PutObject 작업을 호출할 때 오류(AccessControlListNotSupported)가 발생했습니다. 버킷이 ACL을 허용하지 않습니다

## InvalidBucketAclWithObjectOwnership
<a name="object-ownership-error-responses-invalid-acl"></a>

버킷 소유자 적용 설정을 적용하여 ACL을 비활성화하려면 버킷 ACL이 버킷 소유자에게만 전체 제어 권한을 부여해야 합니다. 버킷 ACL은 외부 AWS 계정 또는 다른 그룹에 대한 액세스 권한을 부여할 수 없습니다. 예를 들어 `CreateBucket` 요청이 버킷 소유자 시행을 설정하고 외부 AWS 계정에 대한 액세스를 제공하는 버킷 ACL을 지정하는 경우 요청은 `400` 오류와 함께 실패하고 InvalidBucketAclWithObjectOwnership 오류 코드를 반환합니다. 마찬가지로 `PutBucketOwnershipControls` 요청이 다른 사람에게 권한을 부여하는 버킷 ACL이 있는 버킷에 적용되는 버킷 소유자를 설정하는 경우 요청이 실패합니다.

**Example : 기존 버킷 ACL이 퍼블릭 읽기 액세스 권한 부여**  
예를 들어 기존 버킷 ACL이 퍼블릭 읽기 액세스 권한을 부여하는 경우 이러한 ACL 권한을 버킷 정책으로 마이그레이션하고 버킷 ACL을 기본 프라이빗 ACL로 재설정할 때까지 객체 소유권에 대해 버킷 소유자 적용 설정을 적용할 수 없습니다. 자세한 내용은 [ACL 사용 중지를 위한 사전 조건](object-ownership-migrating-acls-prerequisites.md) 섹션을 참조하세요.  
이 예제 버킷 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을 설정할 수 없습니다.