当 CloudFlare R2 存储桶使用结束,为了保留宝贵的存储空间且进行精简管理,我们需要丢弃这个资源,但我发现无法在仪表盘删除这个桶,因为桶不是空的。桶中存储了数千个小文件,如果手动逐一删除耗时耗力,不太可能。现在介绍一种方法,采用 AWS CLI 客户端方式,进行批量删除。
AWS 命令行界面(AWS CLI)是一个开源工具,允许您通过命令行壳层中的命令与 AWS 服务交互,你可以用 AWS CLI 探索服务的功能,并开发 shell 脚本来管理资源。
选择AWS CLI AED CLI下载链接 对应的版本下载并安装。如Windows安装版本为 AWSCLIV2.msi ,点击安装完成。
验证安装是否成功。
// 检查版本
aws --version
// 如果已成功安装,输出类似信息
aws-cli/2.x.x Python/3.x.x Windows/10 botocore/2.x.x
这步比较关键,也是最容易出错的地方。首先登录到 Cloudflare R2控制面板,查看右下区域 Account Details 部分。
Account ID:API Tokens 下方位置。
创建帐户 API 令牌:API Tokens 右侧的 { } Manage 按钮进入。
创建一个 R2 帐户读写权限 API 令牌
S3 客户端凭据:创建成功后返回我们需要的信息。
创建成功后返回 S3 客户端使用凭据
// 启动配置
aws configure
| 步骤 | 提示 | 输入 |
|---|---|---|
| 1 | AWS Access Key ID | S3 访问密钥 ID |
| 2 | AWS Secret Access Key | S3 机密访问密钥 |
| 3 | Default region name | auto |
| 4 | Default output format | json |
以Windows为例,导航到 C:\Users\<用户名>\.aws文件夹位置。
选择文件config 以文本文件打开,添加 R2 的端点信息,如文件不存在则新建。
[default]
region = auto
output = json
[profile r2]
region = auto
output = json
s3 = endpoint_url = https://<your-account-id>.r2.cloudflarestorage.com
// 列出存储桶
aws --endpoint-url=https://<your-account-id>.r2.cloudflarestorage.com s3 ls
// 删除存储桶所有对象
aws --endpoint-url=https://<your-account-id>.r2.cloudflarestorage.com s3 rm s3://<your-bucket-name> --recursive
// 删除存储桶本身
aws --endpoint-url=https://<your-account-id>.r2.cloudflarestorage.com s3api delete-bucket --bucket <your-bucket-name>
要删除存储桶,你需要先确保它是空的,也可以去R2仪表盘设置中手动删除。