EasyApp

Cloudflare R2 存储

如何使用 Cloudflare R2 存储

尽管 Supabase 已经提供了对象存储服务,但是容量却小的可怜,免费版只有 1GB,但是 Cloudflare R2 即使是免费版本,也提供了每个月 10GB 的存储空间。 所以强烈推荐使用 Cloudflare R2 来做存储服务。

在 EasyAppSupabase 模板中,我们已经提供了一个 Cloudflare R2 的上传函数,你只需要配置好环境变量即可。

您可以在 EasyAppSupabase/supabase/functions/oss-cf-r2 目录下找到上传函数的代码。

获取 R2 凭证

  1. 登录 Cloudflare Dashboard
  2. 进入 R2 -> Overview
  3. 点击 Manage

cfr2_1

cfr2_2

  1. 创建新的 API Token, 输入名称,选择 Object Read & Write,点击 Create

cfr2_3

  1. 复制 Access Key IDSecret Access Key

cfr2_4

  • 令牌值 就是 CLOUDFLARE_API_TOKEN
  • 访问密钥ID 就是 R2_ACCESS_KEY_ID
  • 机密访问密钥 就是 R2_SECRET_ACCESS_KEY
  1. 找到你的 Account ID(在 R2 页面右侧显示)

cfr2_5

  • 账户 ID 就是 CLOUDFLARE_ACCOUNT_ID

创建 R2 Bucket

  1. 进入 R2 -> Overview
  2. 点击 Create bucket
  3. 输入 bucket 名称(例如:easyapp-bucket
  4. 其他配置都用默认就行
  5. 点击 Create bucket
  • Bucket Name 就是 R2_BUCKET_NAME

配置公开访问(可选)

  1. 进入你的 bucket 设置
  2. 点击 Settings -> Public Development URL -> 启用
  3. 强烈建议绑定自定义域名

cfr2_6

  • 自定义域名 就是 R2_PUBLIC_URL

官方已经明确 建议绑定自定义域名,默认的域名有速率限制,不建议用于生产。

配置环境变量(如果你用到了开发环境)

根据上述步骤,在 supabase/.env.local 中添加以下配置:


CLOUDFLARE_ACCOUNT_ID=your_account_id
  CLOUDFLARE_API_TOKEN=your_api_token

R2_ACCESS_KEY_ID=your_access_key_id
R2_SECRET_ACCESS_KEY=your_secret_access_key

R2_BUCKET_NAME=easyapp-bucket

R2_PUBLIC_URL=https://your-bucket.your-domain.com

生产环境

来到 EasyAppSupabase模板,在根目录执行 npm run deploy 命令,该命令会自动将函数、数据库部署到 Supabase。

接着,我们要在 Edge Functions 中配置刚才您获取的环境变量。


CLOUDFLARE_ACCOUNT_ID=your_account_id
  CLOUDFLARE_API_TOKEN=your_api_token

R2_ACCESS_KEY_ID=your_access_key_id
R2_SECRET_ACCESS_KEY=your_secret_access_key

R2_BUCKET_NAME=easyapp-bucket

R2_PUBLIC_URL=https://your-bucket.your-domain.com

cfr2_7

再次提醒

  • 令牌值 就是 CLOUDFLARE_API_TOKEN

  • 访问密钥ID 就是 R2_ACCESS_KEY_ID

  • 机密访问密钥 就是 R2_SECRET_ACCESS_KEY

  • 账户 ID 就是 CLOUDFLARE_ACCOUNT_ID

  • Bucket Name 就是 R2_BUCKET_NAME

  • 自定义域名 就是 R2_PUBLIC_URL

    官方已经明确 建议绑定自定义域名,默认的域名有速率限制,不建议用于生产。

到这里,您就完成了 Cloudflare R2 的配置,接下来您就可以在 EasyAppSwiftUI 模板中体验上传功能了。

该功能在EasyAppSwiftUI/App/Developer/SubPages/OSSCfR2Bucket/View/OSSCfR2BucketView.swift中实现。

Last updated on