當其他 AWS 帳戶上傳物件時,如何變更 Amazon S3 儲存貯體的物件擁有權?

上次更新日期︰2021 年 12 月 17 日

我嘗試使用 S3 物件擁有權變更 Amazon Simple Storage Service (Amazon S3) 儲存貯體中物件的擁有權。該如何進行?

簡短描述

重要提示:S3 中的物件不再由上傳其的 AWS 帳戶自動擁有。

透過 S3 物件擁有權中的強制執行儲存貯體擁有者設定,Amazon S3 儲存貯體中的所有物件現在均可歸儲存貯體擁有者所擁有。Bucket owner enforced (強制執行儲存貯體擁有者) 功能還可停用所有存取控制清單 (ACL),這簡化了 S3 中存放資料的存取管理。

依預設,任何新建立的儲存貯體均啟用了 Bucket owner enforced (強制執行儲存貯體擁有者) 設定。然而,對於現有的儲存貯體,除非您明確停用 ACL,Amazon S3 物件仍歸上傳該物件的 AWS 帳戶所擁有。若要變更現有儲存貯體中物件的物件擁有權,請參閱如何變更 S3 儲存貯體中公有物件的擁有權?

解決方案

變更由其他 AWS 帳戶上傳的物件的物件擁有權

注意:在使用 S3 物件擁有權變更儲存貯體的物件擁有權之前,請確認您擁有對 s3:PutBucketOwnershipControls 動作的存取權。否則,您無法檢視儲存貯體中物件的物件擁有權。如需有關 S3 許可的詳細資訊,請參閲 Amazon S3 的動作、資源和條件金鑰

變更現有 Amazon S3 儲存貯體中物件的物件擁有權 (停用 ACL)

如果您嘗試變更現有 Amazon S3 儲存貯體中物件的物件擁有權,請在 S3 物件擁有權下選擇 ACLs disabled (停用 ACL) 選項。此選項允許儲存貯體擁有者完全控制 S3 儲存貯體中的所有物件,並將擁有權轉移至儲存貯體擁有者的帳戶。

使用此選項不會再影響存取 S3 儲存貯體中資料的許可。相反,此選項會變更儲存貯體中所有物件的擁有權,包括存在的物件以及您在設定 ACLs disabled (停用 ACL) 選項後新增的任何物件。若要定義存取控制,請使用儲存貯體政策

注意:如果您的現有 ACL 授予對外部 AWS 帳戶或任何其他群組的存取權,則 Bucket owner enforced (強制執行儲存貯體擁有者) 設定不起作用。若要套用 Bucket owner enforced (強制執行儲存貯體擁有者) 設定,您的儲存貯體 ACL 必須僅授予儲存貯體擁有者完全控制權。啟用 Bucket owner enforced (強制執行儲存貯體擁有者) 設定之前,請參閲停用 ACL 的先決條件

授予對其他 AWS 帳戶上傳物件的存取權 (啟用 ACL)

從已啟用的 ACL 清單中,選擇 S3 物件擁有權下的 Bucket owner preferred (偏好的儲存貯體擁有者) 選項。上傳到此儲存貯體的任何新物件都由儲存貯體擁有者所擁有,具有 bucket-owner-full-control 預設 ACL。但是,Bucket owner preferred (偏好的儲存貯體擁有者) 設定不會影響現有物件的擁有權。如需有關 Bucket owner preferred (偏好的儲存貯體擁有者) 設定和 ACL 的詳細資訊,請參閲在多帳戶環境中強制執行 Amazon S3 物件的擁有權

將物件擁有權變更為上傳該物件的 AWS 帳戶 (啟用 ACL)

若要將物件擁有權轉移到上傳物件的 AWS 帳戶,請啟用 S3 物件擁有權下的 Object writer (物件寫入器) 選項。此選項可確保上傳物件的 AWS 帳戶擁有該物件。物件擁有者則對該物件具有完全控制權,並可授予其他使用者使用 ACL 來存取該物件。