我正在尝试使用 S3 对象所有权更改 Amazon Simple Storage Service (Amazon S3) 存储桶中其他 AWS 账户上传的对象的所有权。我该如何操作?
简短描述
**重要提示:**S3 中的对象不再始终自动归上传的 AWS 账户拥有。
使用 S3 对象所有权中的存储桶拥有者强制设置后,Amazon S3 存储桶中的所有对象现在都可以归存储桶拥有者所有。存储桶拥有者强制功能还会关闭所有访问控制列表(ACL),简化了对存储在 S3 中的数据的访问管理。
您可以启用存储桶拥有者强制设置,将新创建的存储桶内所有对象的所有权应用到存储桶拥有者账户。
解决方法
更改其他 AWS 账户上传的对象的对象所有权
**注意:**在使用 S3 对象所有权更改存储桶的对象所有权之前,请确保您有权访问 s3:PutBucketOwnershipControls 操作。有关 S3 权限的更多信息,请参阅 Amazon S3 的操作、资源和条件键。
将其他账户在 Amazon S3 存储桶中上传的新对象和现有对象的对象所有权更改为存储桶拥有者账户(禁用 ACL)
如果您试图更改现有 Amazon S3 存储桶中对象的对象所有权,请选择 S3 Object Ownership(S3 对象所有权)下的 ACLs disabled(禁用 ACL)选项。此选项允许存储桶拥有者完全控制 S3 存储桶中的所有对象,并将所有权转移到存储桶拥有者的账户。
使用此选项时,ACL 不再影响访问 S3 存储桶中数据的权限。此选项会更改存储桶中所有对象的所有权,包括当前存在的对象和设置 ACLs disabled(禁用 ACL)选项后添加的任何对象。要定义访问控制,请使用存储桶策略。
注意:如果现有 ACL 授予对外部 AWS 账户或任何其他组的访问权限,则存储桶拥有者强制设置将不起作用。要应用存储桶拥有者强制设置,您的存储桶 ACL 必须仅向存储桶拥有者提供完全控制。在启用存储桶拥有者强制设置之前,请参阅禁用 ACL 的先决条件。
将其他账户在 Amazon S3 存储桶(启用 ACL)中上传的新对象的对象所有权更改为存储桶拥有者账户
在 S3 对象所有权设置下,从启用 ACL 选项的列表中,选择 Bucket owner preferred(存储桶拥有者首选)选项。借助此设置,由其他账户使用 bucket-owner-full-control 预装 ACL 写入的新对象将自动归存储桶拥有者而非对象编写器所有。但是,存储桶拥有者首选设置不会影响现有对象的所有权。此外,可以更新 ACL 并将其用于授予权限。有关存储桶拥有者首选设置和 ACL 的更多信息,请参阅在多账户环境中强制 Amazon S3 对象的所有权。
将对象所有权更改为上传的 AWS 账户(启用 ACL)
要将对象所有权转移到上传的 AWS 账户,请从 S3 Object Ownership(S3 对象所有权)下已启用的 ACL 列表中启用 Object writer(对象编写器)项。此选项可确保上传对象的 AWS 账户拥有该对象。然后,对象拥有者可以完全控制该对象,并可以使用 ACL 授予其他用户对该对象的访问权限。
相关信息
控制对象的所有权并禁用存储桶的 ACL
如何将所有对象从一个 Amazon S3 存储桶复制到另一个存储桶?
如何向 Amazon S3 中的对象添加 bucket-owner-full-control ACL?