要让tos文件被任何人通过url直接访问,必须将bucket或object的读取权限设为“公共读”:默认均为私有,不配置则返回403;可设置整桶公开读(适用于静态网站等场景),或仅单个object公开读(含控制台操作、预签名url临时授权、python sdk批量设置三种方式)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让火山引擎对象存储(TOS)中的文件能被任何人通过 URL 直接访问,必须将对应存储空间(Bucket)或指定对象(Object)的读取权限设为公开。默认所有 Bucket 和 Object 均为私有,不配置则无法外链访问,网页加载图片、前端直传资源等场景会直接返回 403 错误。
设置整个 Bucket 为公开读
这一步适用于静态网站托管、CDN 加速源站、全员可访问的资源池等场景。设置后,该 Bucket 下所有新上传的 Object 默认继承公开读权限。
登录火山引擎控制台 → 进入「对象存储 TOS」服务 → 在左侧选择「存储空间(Bucket)」→ 找到目标 Bucket 并点击其名称进入详情页 → 点击「权限管理」页签 → 在「Bucket ACL」区域,将「读取权限(READ)」从「私有」改为「公共读」→ 单击「保存更改」。
【重要前提:该 Bucket 未开启「防盗链」或已将 referer 白名单设为允许空值,否则即使公开读也无法被外部页面引用】
仅对单个文件(Object)设置公开读
适合敏感数据与公开资源混存的场景,比如只开放某张宣传图、某个 PDF 下载链接,其余文件保持私有。
方法一:控制台操作
在 Bucket 文件列表中,找到目标 Object → 点击右侧「更多」→ 选择「修改权限」→ 将「Object ACL」中的「读取权限(READ)」设为「公共读」→ 确认保存。
方法二:使用预签名 URL(临时公开)
若只需短期外链(如 1 小时内有效),可在控制台选中该 Object → 点击「生成预签名 URL」→ 设置过期时间(最长 604800 秒)→ 复制链接即可分享。此方式不改变 Object 实际权限,安全性更高。
通过 API 或 SDK 批量设置公开读
第一步:确认已安装火山引擎 TOS Python SDK(v2.0.0+)并完成凭证配置;
第二步:执行以下代码片段:
```python
from volcengine.tos import TosClientV2, CopyObjectRequest
client = TosClientV2(...)
resp = client.put_object_acl(Bucket='your-bucket-name', Key='your-object-key', ACL='public-read')
```
第三步:若需批量处理,遍历 Object 列表,对每个 Key 调用 put_object_acl 并传入 ACL='public-read';
第四步:执行后立即生效,无需重启或刷新缓存。
注意:使用 API 修改 ACL 时,【若 Key 对应 Object 不存在,TOS 将静默创建一个空 Object 并赋予 public-read 权限,可能造成意外资源残留】











