Remotely Save使用Cloudflare R2的S3 API接口教程

Cloudflare R2 配置指南

适用场景

  • 需要快速稳定同步笔记
  • 具备以下条件:
    • 拥有有效信用卡或借记卡。
    • 拥有科学上网的能力。

Cloudflare R2免费计划

如有变动,请以官网资讯为准

项目 标准存储 不频繁访问存储(Beta版)
存储费用 $0.015 / GB-月 $0.01 / GB-月
A类操作费用 $4.50 / 百万次请求 $9.00 / 百万次请求
B类操作费用 $0.36 / 百万次请求 $0.90 / 百万次请求
数据检索费用 $0.01 / GB
出站流量费用 免费 免费

免费额度(仅限标准存储)

  • 存储:10 GB-月 / 月
  • A类操作[1]:100 万次请求 / 月
  • B类操作[2]:1,000 万次请求 / 月

存储费用计算方式

存储费用以 千兆字节-月(GB-月) 为计费单位。

GB-月的计算方式为:按计费周期(30天)内每天的峰值存储量取平均值。


前置准备

1. 注册 Cloudflare 账户

2. 注册/完善 PayPal 账户

Cloudflare 不支持借记卡,即使售价 $0 的产品也需要绑定个人付款信息

所以对于只有借记卡的用户,可以使用 Paypal 来验证

以下操作建议使用网页端 Paypal

关联银行账户和卡

  • 关联银行账户:

    • !
    • 银行名称填英文,可以试着打出关键词,会自动弹出匹配项
    • SWIFT代码通过搜索引擎获得
    • 分行地址可不填,地址太长会不予通过
    • 账号填写你本人在该银行持有的卡号

      如果你的卡是在分行开通,填写分行的名称和SWIFT代码不给通过的话,不妨尝试填入总行的名称与代码

  • 关联卡

    • 如果有信用卡按照页面要求输入信息即可。
    • 大部分借记卡不存在CVV代码,直接输入借记卡卡号,那两个框就会消失。(在Paypal App操作大概率会失败,请尝试网页端)
    • 最后短信验证即可完成。

其他信息后续可自行完善,没有难度


配置 Cloudflare R2

1. 创建存储桶(Bucket)

  1. 登录 Cloudflare 控制台

  2. 在左边的菜单栏导航到 R2 对象存储点击订阅完善付款信息(信用卡/Paypal)

  3. 返回主菜单,继续点击R2 对象存储创建存储桶

  4. 输入自定义名称(如 obsidian-syncobsidian-sync-bucket等),选择存储位置。

2. 生成 API 访问密钥

  1. 返回主菜单,进入 R2 对象存储管理 API 令牌

  2. 选择 创建User API 令牌 [3]

  1. 配置权限:

  2. 点击 创建令牌 (仅显示一次,先不要关闭该网页)


配置 Obsidian 插件

1. 安装 Remotely Save 插件

请在OBsidian插件商店或者插件仓库下载安装

2. 配置 R2 连接

  1. 进入插件设置页,选择S3或兼容S3的服务

  2. 填写以下字段:

    • 服务地址(Endpoint)填入Cloudflare提供的管辖权地终结点
    • 区域(Region)填入us-east-1
    • Access Key ID填入Cloudflare提供的访问密钥ID
    • Secret Access Key填入Cloudflare提供的机密访问密钥
    • 存储桶的名字填入你最初设定的名字;
    • 其他按需设置
  3. 点击 检查,如果一切顺利,那么应该会出现如图的正确提示

  4. 所有工作已经完成,可以享受Cloudflare提供的服务了,但请注意流量资费


谢谢你看到这里,希望对你有用 :partying_face:
我在配置时踩了几个坑,但网络几乎没有详细配置Cloudflare同步Obsidian笔记的全流程,大多数都是寥寥几笔带过。
本教程文档也在GitHub提交了PR,等待插件作者Merge
还想发到某乎的,但是它的Markdown编辑器太难用
日常同步无需科学上网,速度也很快,并且一次上传/下载多文件也不会像坚果云WebDev那样有限制


  1. Cloudflare R2 A类操作包含
    ListBuckets - 列出存储桶
    PutBucket - 创建存储桶
    ListObjects - 列出对象
    PutObject - 上传对象
    CopyObject - 复制对象
    CompleteMultipartUpload - 完成分片上传
    CreateMultipartUpload - 初始化分片上传
    LifecycleStorageTierTransition - 生命周期存储层级转换
    ListMultipartUploads - 列出分片上传
    UploadPart - 上传分片
    UploadPartCopy - 复制分片
    ListParts - 列出已上传分片
    PutBucketEncryption - 设置存储桶加密
    PutBucketCors - 设置存储桶跨域资源共享 (CORS)
    PutBucketLifecycleConfiguration - 设置存储桶生命周期配置 ↩︎

  2. Cloudflare R2 B类操作包含
    HeadBucket - 查询存储桶是否存在
    HeadObject - 查询对象元信息
    GetObject - 下载对象
    UsageSummary - 使用情况汇总
    GetBucketEncryption - 获取存储桶加密配置
    GetBucketLocation - 获取存储桶所在区域
    GetBucketCors - 获取存储桶跨域资源共享 (CORS) 配置
    GetBucketLifecycleConfiguration - 获取存储桶生命周期配置 ↩︎

  3. Cloudflare API令牌类型对比
    账户 API 令牌(Account API Token)可类比阿里云主账号(Root Account),具有长期有效性和广泛权限;
    用户 API 令牌(User API Token)可类比阿里云RAM子账号(RAM User),与用户绑定且生命周期可自定义。
    前者适合生产环境使用,后者更适合个人或开发场景。 ↩︎

1 个赞

R2 应该是免费对象存储中最好用的了,唯一美中不足的是网页端不能直接查看存储桶里 md 文件的内容,除非配合自定义域名暴露到公网。