Cloudflare R2
大约 10 分钟,建桶与建令牌都不收费,就能在 Cloudflare R2 上给孤云准备好一个桶和一对密钥(R2 最大的特点是出网流量不额外计费)。
R2 的「地点」不用你选(默认自动放置),而且端点里带账号 ID —— 这是它与其他服务商最大的不同。
分步操作
-
第 1 步
注册并进入 R2
- 打开 Cloudflare 控制台 注册或登录;已有账号就直接登录。
- 在左侧选「R2 对象存储」(R2 object storage);第一次使用要先开通 R2,按页面提示完成即可。
-
第 2 步
创建存储桶
- 在 R2 概览页点「创建存储桶」(Create bucket),填一个桶名:只能用小写字母、数字与短横线,3–63 位。
- 「位置」(Location)保持默认(界面会写 Automatic,并说明放在 Asia Pacific);下面的「Specify jurisdiction」不要动,Default Storage Class 也保持 Standard;公开访问默认关闭,保持关闭,然后点「创建存储桶」。
-
第 3 步
创建 API 令牌并取密钥
- 打开 R2 里的「API Tokens」(API 令牌)页。令牌分两种:Account API token 绑整个账号(Cloudflare 标注 recommended),User API token 绑你的用户、离开组织后会失效 —— 个人账号两者等价,任选一个,点对应的「Create Account API token」/「Create User API token」。
- 权限选「Object Read & Write」,再把范围限定到刚才那个桶;Access Key ID 与 Secret Access Key 只显示一次,立刻存好。
-
第 4 步
记下账号 ID
- 在同一页的「账户详细信息」里复制 Account ID(32 位十六进制);账号首页(Manage Account)也能看到。
- 端点由它决定:
https://<Account ID>.r2.cloudflarestorage.com。孤云要额外填这一格:和腾讯云 COS 的 APPID 一样,R2 也比别的服务商多一项。
-
第 5 步
回孤云填四个值并测试
- 孤云「添加存储」→ 服务商选 Cloudflare R2,按下面那张表填桶名、账号 ID 与密钥;Endpoint 已由 App 填好。
- 再点「测试连接并保存」。
给这个令牌选对权限
R2 不用写策略 JSON:给 S3 客户端授权靠 API 令牌。创建令牌时这样选:
- 权限(Permissions)选「Object Read & Write」—— 只能读写对象,不能建桶、改桶配置。
- 资源(Resources)里只勾刚才那个桶:这样这对密钥只能碰这一个桶。
- 创建后立刻复制 Access Key ID 与 Secret Access Key:Secret Access Key 只显示一次。
R2 的 S3 API 没有实现 PutBucketPolicy,所以这里没有策略 JSON 可粘 —— 授权就是上面这个令牌,这也是它与 AWS S3 最大的不同。
其他情况(用不到可以跳过)
控制台地址:https://dash.cloudflare.com/(直达 R2:https://dash.cloudflare.com/?to=/:account/r2/overview)。
别把 r2.dev 当端点
- 桶设置里可以开启一个
r2.dev公开域名,那是给浏览器公开访问用的,不是端点,孤云不要填它。 - 孤云要填的是 S3 API 端点
https://<Account ID>.r2.cloudflarestorage.com:创建令牌后的确认页与 R2 概览页都能看到。
费用
- R2 有免费额度,覆盖存储与 A 类、B 类操作(仅标准存储);具体额度以官网为准。
- 出网流量不额外计费:从 R2 往外下载不产生流量费,超过免费额度也一样 —— 这是 R2 最大的特点。
- 其余按用量计费;被拒绝的请求不收费。
官方来源
- R2 的 S3 API:区域、端点与支持的接口 (在新窗口打开)
- 创建 R2 API 令牌(权限与限定桶) (在新窗口打开)
抄下这四个值
它们要填进孤云「添加存储」页对应的格子(R2 比别家多一格账号 ID): 地点:R2 不用选(默认自动放置);端点由 App 按账号 ID 自动填好、不用你填 —— 桶名、账号 ID 与密钥照上表填。(注意:控制台里有两个都像「S3 端点」的地址 —— 创建令牌后的确认页「Use jurisdiction-specific endpoints → Default」那一行不带桶名,正是这里要的;桶的 Settings → S3 API 那一行末尾带着 /你的桶名,那是桶级地址,别拿它填孤云的 Endpoint。)
| 抄下这个值 | 填进孤云的哪一格 |
|---|---|
| 桶名 你刚才建的桶名,例如 your-bucket-name。 | 桶名称 |
| 账号 ID Account ID:R2 概览页「账户详细信息」里那串 32 位十六进制,端点里也用它。 | Account ID |
端点https://<Account ID>.r2.cloudflarestorage.com,不带桶名;这一格由 App 自动填好,无需改动。 | Endpoint |
| 密钥 刚才那个 API 令牌的 Access Key ID 与 Secret Access Key。 | Access Key ID 与 Secret Access Key |
怎么知道成了
- 「测试连接并保存」通过,说明这对密钥能读到这个桶;孤云只读根目录,不会改动桶里的东西。
- 之后这条存储会出现在孤云的存储列表里,可以打开看桶里的文件。
- 刚开通 R2 就点「测试连接」如果报 TLS / 安全连接类错误,等几分钟再试一次即可 —— 新建账号的 R2 端点需要一点时间就绪。
- 连接报错时,到常见错误对照排查。
回到孤云,点「测试连接并保存」。