

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 疑難排解
<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`請求設定儲存貯體擁有者強制執行，並指定提供外部存取權的儲存貯體 ACL AWS 帳戶，則您的請求會失敗並發生錯誤，`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