

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

# 設定現有儲存貯體的「物件擁有權」
<a name="object-ownership-existing-bucket"></a>

您可以在現有 S3 儲存貯體上設定 S3 物件擁有權。若要在建立儲存貯體時套用「物件擁有權」，請參閱 [在建立儲存貯體時設定「物件擁有權」](object-ownership-new-bucket.md)。

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，可讓您停用[存取控制清單](acl-overview.md) (ACL) 並取得儲存貯體中每個物件的擁有權，簡化存放在 Amazon S3 中資料的存取管理。根據預設，新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定，而且會停用 ACL。停用 ACL 後，儲存貯體擁有者會擁有儲存貯體中的每個物件，並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態，除非在異常情況下必須個別控制每個物件的存取。

「物件擁有權」有三項設定，可讓您用來控制對上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL：

**已停用 ACL**
+ **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

**已啟用 ACL**
+ **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。
+ **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

**先決條件**：在套用「儲存貯體擁有者強制執行」設定以停用 ACL 之前，您必須將儲存貯體 ACL 許可遷移至儲存貯體政策，並將儲存貯體 ACL 重設為預設的私有 ACL。也建議您將物件 ACL 許可遷移至儲存貯體政策，並編輯需要 ACL (儲存貯體擁有者完全控制 ACL 除外) 的儲存貯體政策。如需詳細資訊，請參閱[停用 ACL 的先決條件](object-ownership-migrating-acls-prerequisites.md)。

**許可**：若要使用這項操作，您必須擁有 `s3:PutBucketOwnershipControls` 許可。如需 Amazon S3 許可的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

## 使用 S3 主控台
<a name="add-object-ownership"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您要將 S3 「物件擁有權」設定套用至其中的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Object Ownership** (物件擁有權) 下，選擇 **Edit** (編輯)。

1. 在 **Object Ownership** (物件擁有權) 下，若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權，請選擇下列其中一個設定：

**已停用 ACL**
   + **Bucket owner enforced** (儲存貯體擁有者強制執行) – 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

     若要要求使用 IAM 或 AWS Organizations 政策在停用 ACLs 的情況下建立所有新儲存貯體，請參閱 [停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced)。

**已啟用 ACL**
   + **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。

     如果您套用儲存貯體擁有者偏好設定，則要求所有 Amazon S3 上傳都包含 `bucket-owner-full-control` 罐裝 ACL 時，您可以[新增儲存貯體政策](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，只允許使用此 ACL 的物件上傳。
   + **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

1. 選擇**儲存**。

## 使用 AWS CLI
<a name="object-ownership-existing-bucket-cli"></a>

若要針對現有儲存貯體套用「物件擁有權」設定，請使用具有 `--ownership-controls` 參數的 `put-bucket-ownership-controls` 命令。擁有權的有效值為 `BucketOwnerEnforced`、`BucketOwnerPreferred` 或 `ObjectWriter`。

此範例會使用 AWS CLI為現有儲存貯體套用「儲存貯體擁有者強制執行」設定：

```
aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
```

如需 `put-bucket-ownership-controls` 的詳細資訊，請參閱《AWS Command Line Interface 使用者指南》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html)。

## 使用適用於 Java 的 AWS 開發套件
<a name="object-ownership-existing-bucket-sdk-java"></a>

此範例會使用 適用於 Java 的 AWS SDK為現有儲存貯體套用「物件擁有權」的 `BucketOwnerEnforced` 設定：

```
         // Build the ObjectOwnership for BucketOwnerEnforced
         OwnershipControlsRule rule = OwnershipControlsRule.builder()
                .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
                .build();

         OwnershipControls ownershipControls = OwnershipControls.builder()
                   .rules(rule)
                   .build()

          // Build the PutBucketOwnershipControlsRequest
          PutBucketOwnershipControlsRequest putBucketOwnershipControlsRequest =
                PutBucketOwnershipControlsRequest.builder()
                        .bucket(BUCKET_NAME)
                        .ownershipControls(ownershipControls)
                        .build();
                        
          // Send the request to Amazon S3 
          s3client.putBucketOwnershipControls(putBucketOwnershipControlsRequest);
```

## 使用 CloudFormation
<a name="object-ownership-existing-bucket-cfn"></a>

若要使用 CloudFormation 為現有儲存貯體套用物件擁有權設定，請參閱*AWS CloudFormation 《 使用者指南*[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html)》中的 。

## 使用 REST API
<a name="object-ownership-existing-bucket-rest-api"></a>

若要使用 REST API 將「物件擁有權」設定套用至現有的 S3 儲存貯體，請使用 `PutBucketOwnershipControls`。如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html)。

**後續步驟**：套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後，您可以進一步採取下列步驟：
+ [儲存貯體擁有者強制執行](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) – 需要使用 IAM 或 Organizations 政策，在停用 ACL 的情況下建立所有新儲存貯體。
+ [儲存貯體擁有者偏好](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) – 新增 S3 儲存貯體政策，以要求所有物件上傳到您儲存貯體的 `bucket-owner-full-control` 標準 ACL。