接入教程 · 火山引擎 TOS · Cloudflare R2

把云对象存储
接进存储熊

这份教程按 13 步带你走完火山引擎 TOS:从控制台创建一个只用于程序访问的 IAM 用户,拿到 AccessKey;建一个私有存储桶;把 S3 Endpoint 和 Region 抄下来;最后回到存储熊填进「添加云存储」。全程约 20 分钟,密钥只保存在你自己的电脑上。如果你用 Cloudflare R2,可以直接跳到文末的 R2 步骤。

适用火山引擎 TOS / Cloudflare R2 初次配置约 20 分钟 截图已脱敏 密钥只留在本机
关于截图中的涂黑块

教程里所有账号昵称、账号 ID、登录链接、AccessKey、Secret、桶名和余额都做了不透明遮挡,只保留界面结构供你对照。实际操作时,请把密钥写在密码管理器或存储熊的输入框里,不要贴进群聊、截图或代码仓库。

AI 辅助创作

01进入访问控制

登录火山引擎控制台,点击右上角账号头像,在弹出菜单里选择「访问控制」。

火山引擎控制台右上角账号菜单,箭头指向访问控制
账号菜单展开后,底部「访问控制」是进入 IAM 的入口;昵称、账号 ID 与余额在教程中已遮挡。

02打开 IAM 用户

在访问控制页面进入「用户管理 → 用户」,点击右上角「新建用户」。

访问控制的用户列表页,新建用户按钮被红框标出
用户列表为空很正常。顶部提示里的「用户登录链接」带有你的账号 ID,公开截图前务必遮挡。

03选择创建方式

选择「通过用户名创建」。不要用手机号或邀请其他账号的方式,这两种都不适合程序访问。

创建用户页面中选择通过用户名创建
自定义创建只需要一个用户名,最省事。

04填写用户信息与访问方式

  • 用户名:建议用容易识别的名字,例如 storagebear-tos,仅用于程序访问。
  • 手机号 / 邮箱:可选,用于你自己在控制台里找回这个用户。
  • 编程访问:勾选,允许用 AccessKey 调用 API。
  • 允许用户管理自己的 API 密钥:勾选,之后可以自己创建或轮换密钥。
  • 控制台访问:不要勾选,避免这个账号能登进控制台。
创建用户的基本信息与访问方式设置
用户信息中的手机号与邮箱已遮挡。

05分配权限

权限设置选择「直接添加权限」,然后勾选两个策略:

  • AccessKeySelfManageAccess:允许该用户管理自己的 AccessKey。
  • TOSFullAccess:允许使用对象存储 TOS。

不要勾选 AdministratorAccess。这个 IAM 用户只服务存储熊,TOSFullAccess 已经够用;如果你账号里还有别的重要资源,后续可以再收紧成只允许指定桶的自定义策略。

权限设置中选择直接添加权限并勾选策略
红圈标出的两个策略就是全部所需,其余保持不勾选。

06保存 AccessKey 与 Secret

创建完成后,控制台会显示 AccessKey ID 和 Secret Access Key。立刻复制或下载保存:

  • Secret 通常只显示一次,关掉页面就只能重新创建。
  • 不要发到群里,不要提交到代码仓库,也不要在公开截图里露出明文。
  • 存进密码管理器,或者等下直接粘进存储熊的输入框。
创建用户完成页面,AccessKey 与 Secret 已被遮挡
教程图里 AccessKey 与 Secret 用不透明色块完全覆盖,标签保留方便对照。
密钥泄露了怎么办

立刻回到 IAM 用户列表,禁用或删除这个 AccessKey,再新建一个。泄露过的密钥永远不要再用。

07回到产品菜单

点击顶部「产品」→「存储」→「对象存储」。

火山引擎产品菜单中进入对象存储
产品页的「对象存储」在基础存储服务一栏。

08进入对象存储

在对象存储产品页点击「立即使用」,进入 TOS 控制台。

对象存储 TOS 产品页的立即使用按钮
TOS 兼容 S3 接口,所以后面要填 S3 Endpoint。

09打开桶列表

在 TOS 控制台左侧进入「桶列表」,点击「创建桶」。

TOS 桶列表页与创建桶按钮
桶名在列表里已遮挡;区域的取值后面要填进存储熊。

10填写存储桶配置

  • 名称:按控制台提示填写唯一名称,例如 <你的名字>-storage。
  • 区域:选离你最近的区域。创建后不要随意更换,存储熊的 Endpoint 和区域必须与桶一致。
  • 版本控制:开或关都行,个人使用可以先关闭。
  • 桶策略:选「私有」,不要选公共读 / 公共读写。
  • 默认存储类型:选「标准存储」,理由见文末的选购建议。
  • 项目:保持 default 即可。
创建存储桶的配置表单
桶名在教程图中已遮挡;你只需要记住自己填的那个名字。

11记录 S3 Endpoint 与 Region

进入刚创建的桶的「概览」页,在「访问域名」里找到 S3 Endpoint,不要复制普通的「外网访问」域名。

你在概览页看到的填进存储熊的值
S3 Endpoint,例如 https://tos-s3-cn-shanghai.volces.com原样复制,必须带 https:// 且包含 -s3-
所属地域,例如「华东2(上海)」Region:cn-shanghai
存储桶名称Bucket 名称,大小写必须完全一致
存储桶概览页的访问域名与基本信息
桶名、Endpoint 域名在教程图中均已遮挡,但 S3 Endpoint 与 Region 的位置看得出来。
三项要对应

S3 Endpoint、Region、桶名必须来自同一个桶。区域写错是最常见的接入失败原因。

12在存储熊添加云存储

打开存储熊 →「云端与续费」→「添加云存储」,选择「火山引擎 TOS · Beta」。

页面上的余额查询是 Beta 功能,需要额外的费用中心权限;即使余额查询失败,也不影响对象存储接入和文件上传。

存储熊云端与续费页面
左下角账号数字、存储卡详情与配额均已遮挡。

13填写连接信息

字段填什么
显示名称自定义,例如「火山 TOS」
S3 Endpoint教程 11 复制的 S3 Endpoint,必须带 https:// 且包含 -s3-
地域 Region教程 11 的区域,例如 cn-shanghai
Bucket 名称创建桶时的完整名称,大小写必须一致
访问样式「虚拟主机样式(Virtual)」
配额记录 / 到期日期 / 续费网址都可以留空,填了用于到期提醒
AccessKey / SecretKey教程 6 保存的 ID 与密钥

先点「测试连接」,通过后再保存。测试失败就依次核对 Endpoint、Region、Bucket、密钥,以及第 5 步的 TOSFullAccess 权限是否真的勾上了。

存储熊添加云存储的表单
填好后的表单。密钥只写在存储熊本地,经系统加密保存,服务器不保存。

+Cloudflare R2 接入步骤

Cloudflare R2 与火山引擎 TOS 一样提供 S3 兼容接口,但有两处必须注意:Endpoint 里要带账户 ID,Region 固定填 auto,并且访问样式必须选路径样式。免费额度为每月 10 GB 存储与一定量的读写请求,超出后按量计费,具体以 Cloudflare 当期说明为准。

  1. 开通 R2

    登录 Cloudflare 控制台,左侧进入「R2 对象存储」。首次使用需要绑定支付方式才能开通,开通后才会出现 Bucket 与 API 令牌入口。

  2. 创建 Bucket

    点击「Create bucket」,名称只能用小写字母、数字和连字符,例如 myname-storage。位置保持默认(Automatic)即可,R2 会自动选择就近区域。

  3. 记录 Endpoint 与账户 ID

    在 R2 概览页右侧可以看到账户 ID。S3 Endpoint 的格式固定为:https://<账户ID>.r2.cloudflarestorage.com。不要填成 <bucket>.<账户ID>.r2.cloudflarestorage.com,也不要省略账户 ID。

  4. 创建 API 令牌

    进入「Manage R2 API Tokens」→「Create API token」。权限选择 Object Read & Write,并把范围限制在上一步创建的 Bucket(不要用账户级全权限令牌)。创建后页面会显示 Access Key ID 与 Secret Access Key,Secret 只显示一次,请立刻保存。

  5. 在存储熊填写

    打开「云端与续费 → 添加云存储」,厂商选择 Cloudflare R2,然后按下表填写。先点「测试连接」,通过后再保存。

字段填什么
显示名称自定义,例如「Cloudflare R2」
S3 Endpointhttps://<账户ID>.r2.cloudflarestorage.com,必须带账户 ID 与 https://
地域 Regionauto(R2 不接受具体区域名)
Bucket 名称与 R2 控制台里的 Bucket 完全一致,含大小写
访问样式路径样式(Path)
AccessKey / SecretKeyAPI 令牌页面给出的 Access Key ID 与 Secret Access Key
配额记录 / 到期日期 / 续费网址都可以留空,填了用于到期提醒
R2 常见失败原因

① Endpoint 漏了账户 ID;② Region 填成了具体地区;③ 访问样式选了虚拟主机样式;④ 令牌权限只有 Read、没有 Write;⑤ Bucket 名大小写不一致。任意一条不对,测试连接都会失败并返回 403 或 404。

不需要额外配置 CORS

存储熊的文件读写由电脑端的本地代理直接发起,不经过浏览器,因此不用给 R2 配置 CORS 规则。分享链接是预签名 GET 链接,有效期 6 天,到期后返回 403 属正常现象,重新创建即可。

+存储类型选购建议

建议购买标准存储,并使用按量购买 / 按量付费。不要为了首年低价就把常用文件放进低频、归档或冷归档存储——这些类型单价虽低,但取回可能产生额外费用和等待时间,不适合需要随时打开、迁出或预览的文件。资源包只在用量可预测时再考虑。

火山引擎对象存储各存储类型的价格与取回费用对比表
标准存储适合日常读写;低频与归档类还要额外付取回费,且取回有延迟。
提示:个人经验,不构成商业意见

以上为个人使用经验分享,不构成商业意见或购买建议。实际价格、可用区域与计费规则请以火山引擎控制台当期的说明为准。