跳转到内容
搜索文档

存储桶锁定

最后更新 查看 MarkdownAgent 设置

存储桶锁定可在指定期限内——或无限期——防止 R2 存储桶中的对象被删除和覆盖。启用后,存储桶锁定对对象强制执行保留策略,帮助防止意外或过早删除。

存储桶锁定入门

开始之前,您需要:

  • 现有 R2 存储桶。若尚无 R2 存储桶,请参阅 创建存储桶
  • (仅 API)具有编辑 R2 存储桶配置权限的 API 令牌。

通过仪表板启用存储桶锁定

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 选择要添加存储桶锁定规则的存储桶。

  3. 切换到 Settings(设置) 选项卡,向下滚动至 Bucket lock rules(存储桶锁定规则) 卡片。

  4. 选择 Add rule(添加规则),输入规则名称、前缀和保留期。

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

通过 Wrangler 启用存储桶锁定

  1. 安装 npm
  2. 安装 Wrangler(Developer Platform CLI)
  3. 使用 wrangler login 命令登录 Wrangler。
  4. 运行 r2 bucket lock add 命令为存储桶添加锁定规则。
npx wrangler r2 bucket lock add <BUCKET_NAME> [OPTIONS]

或者,可使用 r2 bucket lock set 命令从 JSON 文件设置存储桶的完整锁定配置。

npx wrangler r2 bucket lock set <BUCKET_NAME> --file <FILE_PATH>

JSON 文件格式应与 put bucket lock configuration API 的请求体一致。

通过 API 启用存储桶锁定

有关 Cloudflare API 入门信息,请参阅 发起 API 调用。有关必需参数及设置存储桶锁定配置的更多示例,请参阅 API 文档

以下是设置存储桶锁定配置(规则集合)的示例:

curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/r2/buckets/<BUCKET_NAME>/lock" \
    -H "Authorization: Bearer <API_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{
        "rules": [
            {
                "id": "lock-logs-7d",
                "enabled": true,
                "prefix": "logs/",
                "condition": {
                    "type": "Age",
                    "maxAgeSeconds": 604800
                }
            },
            {
                "id": "lock-images-indefinite",
                "enabled": true,
                "prefix": "images/",
                "condition": {
                    "type": "Indefinite"
                }
            }
        ]
    }'

此请求创建两条规则:

  • lock-logs-7dlogs/ 前缀下的对象保留 7 天(604800 秒)。
  • lock-images-indefiniteimages/ 前缀下的对象无限期锁定。

获取 R2 存储桶的锁定规则

仪表板

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 选择要查看锁定规则的存储桶。

  3. 切换到 Settings(设置) 选项卡,向下滚动至 Bucket lock rules(存储桶锁定规则) 卡片。

Wrangler

要列出存储桶锁定规则,运行 r2 bucket lock list 命令

npx wrangler r2 bucket lock list <BUCKET_NAME>

API

有关必需参数及获取锁定规则示例的更多信息,请参阅 API 文档

从 R2 存储桶移除锁定规则

仪表板

  1. 在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。

    Go to Overview ↗
  2. 选择要修改的存储桶。

  3. 切换到 Settings(设置) 选项卡,向下滚动至 Bucket lock rules(存储桶锁定规则) 卡片。

  4. 找到要移除的规则,选择其旁的 ... 图标,然后选择 Delete(删除)

Wrangler

要移除存储桶锁定规则,运行 r2 bucket lock remove 命令

npx wrangler r2 bucket lock remove <BUCKET_NAME> --id <RULE_ID>

API

要通过 API 移除锁定规则,从更新后的配置中排除相应规则,并使用 put bucket lock configuration API

存储桶锁定规则

存储桶锁定配置最多可包含 1,000 条规则。每条规则指定覆盖哪些对象(通过前缀)以及对象必须锁定多长时间。您可以:

  • 将对象锁定指定期限。例如 90 天。
  • 将对象保留至特定日期。例如 2026 年 1 月 1 日。
  • 无限期锁定对象。

若多条规则适用于同一前缀或对象键,最严格(最长)的保留要求优先。

说明

  • 无前缀的规则适用于存储桶中所有对象。
  • 规则适用于存储桶中的新对象和现有对象。
  • 存储桶锁定规则优先于生命周期规则。例如,若生命周期规则尝试在 30 天时删除对象,但锁定规则要求保留 90 天,则对象在 90 天要求满足前不会被删除。
  • 配置了任何锁定规则时无法清空存储桶。在清空存储桶前须移除所有锁定规则。从仪表板删除文件夹时也适用锁定规则。

这篇文档对您有帮助吗?