配置 S3 对象锁定 - Amazon Simple Storage Service

配置 S3 对象锁定

借助 Amazon S3 对象锁定,您可以使用一次写入多次读取(WORM)模式在 Amazon S3 中存储对象。您可以​使用 S3 对象锁定在固定的时间段内或无限期地阻止删除或覆盖对象。有关对象锁定功能的一般信息,请参阅使用对象锁定以锁定对象

在锁定任何对象之前,必须在存储桶上启用 S3 版本控制和对象锁定。之后,您可以设置保留期和/或依法保留。

要使用对象锁定功能,您必须拥有一定的权限。有关与各种对象锁定操作相关的权限列表,请参阅所需的权限

重要
  • 在某个存储桶上启用对象锁定后,您将无法为该存储桶禁用对象锁定或暂停版本控制。

  • 具有对象锁定的 S3 存储桶不能用作服务器访问日志的目标存储桶。有关更多信息,请参阅 使用服务器访问日志记录来记录请求

创建新的 S3 存储桶时启用对象锁定

您可以使用 Amazon S3 控制台、AWS Command Line Interface(AWS CLI)、AWS SDK 或 Amazon S3 REST API 在创建新的 S3 存储桶时启用对象锁定。

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 选择创建存储桶

    此时将打开创建存储桶页面。

  4. 对于存储桶名称,输入存储桶的名称。

    注意

    创建存储桶后,便无法更改其名称。有关给存储桶命名的更多信息,请参阅存储桶命名规则

  5. 对于区域,选择要放置存储桶的 AWS 区域。

  6. 对象所有权下,选择禁用或启用访问控制列表(ACL),并控制上传到存储桶中的对象的所有权。

  7. 此存储桶的屏蔽公共访问权限设置下,选择要应用于存储桶的屏蔽公共访问权限设置。

  8. 存储桶版本控制下,选择已启用

    对象锁定仅适用于受版本控制的存储桶。

  9. (可选)在标签下,您可以选择向存储桶添加标签。标签是用于对存储进行分类和分配成本的键/值对。

  10. 高级设置下,找到对象锁定,然后选择启用

    您必须确认,启用对象锁定将永久允许锁定此存储桶中的对象。

  11. 选择创建存储桶

以下 create-bucket 示例创建了一个名为 amzn-s3-demo-bucket1 的新 S3 存储桶,该存储桶启用了对象锁定:

aws s3api create-bucket --bucket amzn-s3-demo-bucket1 --object-lock-enabled-for-bucket

有关更多信息和示例,请参阅《AWS CLI 命令参考》中的 create-bucket

注意

您可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、经过预验证的 Shell,您可以直接从AWS Management Console中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的什么是 CloudShell?

您可以使用 REST API 创建一个启用了对象锁定的新 S3 存储桶。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 CreateBucket

有关在使用 AWS SDK 创建新的 S3 存储桶时如何启用对象锁定的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关如何使用 AWS SDK 获取当前对象锁定配置的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用 AWS SDK 演示不同对象锁定功能的交互式场景,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用不同 AWS SDK 的一般信息,请参阅《Amazon S3 API 参考》中的 Developing with Amazon S3 using the AWS SDKs

在现有 S3 存储桶上启用对象锁定

您可以使用 Amazon S3 控制台、AWS CLI、AWS SDK 或 Amazon S3 REST API 为现有 S3 存储桶启用对象锁定。

注意

对象锁定仅适用于受版本控制的存储桶。

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 存储桶列表中,选择要为其启用对象锁定的存储桶的名称。

  4. 选择属性选项卡。

  5. 属性下,向下滚动到对象锁定部分,然后选择编辑

  6. 对象锁定下,选择启用

    您必须确认,启用对象锁定将永久允许锁定此存储桶中的对象。

  7. 选择 Save changes(保存更改)

以下 put-object-lock-configuration 示例命令在名为 amzn-s3-demo-bucket1 的存储桶上设置 50 天的对象锁定保留期:

aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket1 --object-lock-configuration='{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 50 }}}'

有关更多信息和示例,请参阅《AWS CLI 命令参考》中的 put-object-lock-configuration

注意

您可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、经过预验证的 Shell,您可以直接从AWS Management Console中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的什么是 CloudShell?

您可以使用 Amazon S3 REST API 在现有 S3 存储桶上启用对象锁定。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutObjectLockConfiguration

有关如何使用 AWS SDK 为现有 S3 存储桶启用对象锁定的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关如何使用 AWS SDK 获取当前对象锁定配置的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用 AWS SDK 演示不同对象锁定功能的交互式场景,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用不同 AWS SDK 的一般信息,请参阅《Amazon S3 API 参考》中的 Developing with Amazon S3 using the AWS SDKs

您可以使用 Amazon S3 控制台、AWS CLI、AWS SDK 或 Amazon S3 REST API 设置或移除 S3 对象的依法保留。

重要
  • 如果要对一个对象设置依法保留,则该对象的存储桶必须已启用对象锁定。

  • 当您在存储桶中 PUT 具有明确的单独保留模式和期限的对象版本时,该对象版本的单独对象锁定设置会覆盖所有存储桶属性保留设置。

有关更多信息,请参阅 依法保留

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 存储桶列表中,选择包含要设置或修改其依法保留的对象的存储桶名称。

  4. 对象列表中,选择要设置或修改其依法保留的对象。

  5. 对象属性页面上,找到对象锁定依法保留部分,然后选择编辑

  6. 选择启用以设置依法保留,或选择禁用以移除依法保留。

  7. 选择 Save changes(保存更改)

以下 put-object-legal-hold 示例为名为 amzn-s3-demo-bucket1 的存储桶中的对象 my-image.fs 设置了依法保留:

aws s3api put-object-legal-hold --bucket amzn-s3-demo-bucket1 --key my-image.fs --legal-hold="Status=ON"

以下 put-object-legal-hold 示例为名为 amzn-s3-demo-bucket1 的存储桶中的对象 my-image.fs 移除了依法保留:

aws s3api put-object-legal-hold --bucket amzn-s3-demo-bucket1 --key my-image.fs --legal-hold="Status=OFF"

有关更多信息和示例,请参阅《AWS CLI 命令参考》中的 put-object-legal-hold

注意

您可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、经过预验证的 Shell,您可以直接从AWS Management Console中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的什么是 CloudShell?

您可以使用 REST API 设置或修改对象的依法保留。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutObjectLegalHold

有关如何使用 AWS SDK 为对象设置法定保留的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关如何使用 AWS SDK 获取当前法定保留状态的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用 AWS SDK 演示不同对象锁定功能的交互式场景,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用不同 AWS SDK 的一般信息,请参阅《Amazon S3 API 参考》中的 Developing with Amazon S3 using the AWS SDKs

设置或修改 S3 对象的保留期

您可以使用 Amazon S3 控制台、AWS CLI、AWS SDK 或 Amazon S3 REST API 设置或修改 S3 对象的保留期。

重要
  • 如果要对一个对象设置保留期,则该对象的存储桶必须已启用对象锁定。

  • 当您在存储桶中 PUT 具有明确的单独保留模式和期限的对象版本时,该对象版本的单独对象锁定设置会覆盖所有存储桶属性保留设置。

  • 在合规模式下,要想在保留日期到期前删除对象,唯一的方法就是删除相关的 AWS 账户。

有关更多信息,请参阅 保留期限

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 存储桶列表中,选择包含要设置或修改其保留期的对象的存储桶名称。

  4. 对象列表中,选择要设置或修改其保留期的对象。

  5. 对象属性页面上,找到对象锁定保留部分,然后选择编辑

  6. 保留下,选择启用以设置保留期,或者选择禁用以删除保留期。

  7. 如果选择启用,请在保留模式下选择治理模式合规模式。有关更多信息,请参阅 保留模式

  8. 保留截止日期下,选择您希望保留期结束的日期。在该时间段内,您的对象将受 WORM 保护,不能被覆盖或删除。有关更多信息,请参阅 保留期限

  9. 选择 Save changes(保存更改)

以下 put-object-retention 示例将名为 amzn-s3-demo-bucket1 的存储桶中对象 my-image.fs 的保留期限设置为 2025 年 1 月 1 日:

aws s3api put-object-retention --bucket amzn-s3-demo-bucket1 --key my-image.fs --retention='{ "Mode": "GOVERNANCE", "RetainUntilDate": "2025-01-01T00:00:00" }'

有关更多信息和示例,请参阅《AWS CLI 命令参考》中的 put-object-retention

注意

您可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、经过预验证的 Shell,您可以直接从AWS Management Console中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的什么是 CloudShell?

您可以使用 REST API 设置对象的保留期。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutObjectRetention

有关如何使用 AWS SDK 为对象设置保留期的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关如何使用 AWS SDK 获取对象保留期的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用 AWS SDK 演示不同对象锁定功能的交互式场景,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用不同 AWS SDK 的一般信息,请参阅《Amazon S3 API 参考》中的 Developing with Amazon S3 using the AWS SDKs

设置或修改 S3 存储桶的默认保留期

您可以使用 Amazon S3 控制台、AWS CLI、AWS SDK 或 Amazon S3 REST API 设置或修改 S3 存储桶的默认保留期。您可以指定放入存储桶中的每个对象版本受保护的持续时间,以天或年为单位。

重要
  • 如果要为某个存储桶设置默认保留期,则该存储桶必须已启用对象锁定。

  • 当您在存储桶中 PUT 具有明确的单独保留模式和期限的对象版本时,该对象版本的单独对象锁定设置会覆盖所有存储桶属性保留设置。

  • 在合规模式下,要想在保留日期到期前删除对象,唯一的方法就是删除相关的 AWS 账户。

有关更多信息,请参阅 保留期限

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 存储桶列表中,选择要设置或修改其默认保留期的存储桶的名称。

  4. 选择属性选项卡。

  5. 属性下,向下滚动到对象锁定部分,然后选择编辑

  6. 默认保留期下,选择启用以设置默认保留期,或者选择禁用以删除默认保留期。

  7. 如果选择启用,请在保留模式下选择治理模式合规模式。有关更多信息,请参阅 保留模式

  8. 默认保留期下,选择您希望保留期持续的天数或年数。放置在此存储桶中的对象将在此天数或年数内被锁定。有关更多信息,请参阅 保留期限

  9. 选择 Save changes(保存更改)

以下 put-object-lock-configuration 示例命令使用合规模式在名为 amzn-s3-demo-bucket1 的存储桶上设置 50 天的对象锁定保留期:

aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket1 --object-lock-configuration='{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 50 }}}'

以下 put-object-lock-configuration 示例删除了存储桶上的默认保留配置:

aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket1 --object-lock-configuration='{ "ObjectLockEnabled": "Enabled"}'

有关更多信息和示例,请参阅《AWS CLI 命令参考》中的 put-object-lock-configuration

注意

您可以从控制台中使用 AWS CloudShell 运行 AWS CLI 命令。AWS CloudShell 是一个基于浏览器、经过预验证的 Shell,您可以直接从AWS Management Console中启动它。有关更多信息,请参阅《AWS CloudShell 用户指南》中的什么是 CloudShell?

您可以使用 REST API 在现有的 S3 存储桶上设置默认保留期。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutObjectLockConfiguration

有关如何使用 AWS SDK 在现有 S3 存储桶上设置默认保留期的示例,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用 AWS SDK 演示不同对象锁定功能的交互式场景,请参阅《Amazon S3 API 参考》中的 Code examples

有关使用不同 AWS SDK 的一般信息,请参阅《Amazon S3 API 参考》中的 Developing with Amazon S3 using the AWS SDKs