一、结论
对象存储设置图片公开访问的核心操作思路为先配置存储桶的公共读权限,再通过S3协议完成接入配置即可,通常需要提前准备Endpoint、AccessKey、SecretKey、Bucket、Region等信息,配置完成后测试图片访问链接可正常匿名访问即设置成功。
二、准备工作
操作前需要提前准备以下内容,避免配置过程中反复切换页面查找信息:
- 对象存储服务的有效可用账号
- 已创建完成、用于存放图片的目标存储桶(Bucket)
- 存储桶所属服务官方提供的Endpoint访问地址
- 账号下生成的状态正常的AccessKey、SecretKey密钥对
- 存储桶对应所属区域的Region代码
- 若通过第三方程序对接,需提前安装支持S3协议的客户端、程序或插件(如PicGo、WordPress S3附件插件、Alist、Cloudreve等)
- 需公开访问的测试图片文件
三、操作步骤
每一步操作均包含明确动作和预期结果,可对照执行:
1. 登录对象存储服务的控制台,进入目标存储桶的配置管理页面,找到权限设置模块,开启存储桶的公共读权限,同时关闭针对匿名访问的强制签名校验规则,预期结果为存储桶默认权限调整为匿名用户可读取文件、不可修改删除文件。
2. 在控制台的访问控制或密钥管理页面,复制当前账号的AccessKey和SecretKey,同时记录存储桶对应的Endpoint地址、Region代码、Bucket准确名称,预期结果为集齐所有S3协议接入需要的配置参数。
3. 若直接通过控制台上传图片,直接进入存储桶的文件管理页面上传目标图片即可;若通过第三方程序对接,打开对应程序的存储配置页面,选择S3兼容存储/通用对象存储的配置选项,预期结果为进入S3参数填写界面。
4. 按照程序提示依次填写提前复制的Endpoint、AccessKey、SecretKey、Bucket名称、Region信息,若程序支持自定义存储路径、域名前缀可根据业务需求填写,预期结果为所有必填配置项录入完成。
5. 保存配置后点击程序自带的测试连接功能,等待连接成功提示,若连接失败先逐一核对参数是否填写正确,预期结果为确认程序与对象存储服务的通信链路正常。
6. 通过控制台或对接的程序上传一张测试图片,复制生成的图片公开访问链接,在无痕浏览器中打开该链接,确认图片可正常加载且无需登录、无需验证权限,预期结果为确认图片公开访问功能正常。
7. 根据自身业务需求,将配置完成的对象存储服务接入网站附件存储、图床、资源站、小程序等场景,完成全流程配置。
四、常见错误
配置过程中容易出现以下问题,可对照排查解决:
- Endpoint填写错误:比如手动输入时多写了后缀、选择了和存储桶所属区域不匹配的Endpoint,解决建议为回到服务控制台直接复制官方提供的对应存储桶的Endpoint,避免手动输入出错。
- 存储桶权限配置错误:仅开启了私有读写权限未开启公共读,或者开启了全租户的强制私有访问规则,解决建议为回到存储桶权限管理页面,确认公共读权限已开启,关闭针对匿名访问的强制签名校验规则。
- AccessKey或SecretKey填写错误:复制时多带了前后空格、密钥已过期或被管理员禁用,解决建议为检查密钥前后是否有多余空白字符,确认密钥状态为正常启用,若无法排查可重新生成新的密钥对替换。
- Region填写不匹配:填写了其他区域的代码、大小写错误或者未按照程序要求填写,解决建议为核对控制台给出的存储桶对应Region的正确代码,按照程序要求的格式填写,部分程序无特殊要求可留空。
- 图片上传成功但访问返回403:解决建议为先检查单张图片的权限是否继承了存储桶的公共读权限,部分对象存储服务支持单文件单独设置权限,确认目标图片的权限为公开可读。
- 第三方程序配置时默认开启强制签名访问:解决建议为在程序的S3配置项中关闭签名访问的开关,选择公开访问/匿名访问模式即可。
五、示例说明
以下为通用S3配置示例,所有字段均填写服务方提供的官方信息即可,无需自定义编造:
- Endpoint:填写对象存储服务官方提供的、与存储桶所属区域对应的访问地址
- AccessKey:填写账号下生成的有效访问密钥ID
- SecretKey:填写与AccessKey配对的密钥字符串
- Bucket:填写目标存储桶的准确名称,注意区分大小写
- Region:填写存储桶所属区域对应的官方代码,无特殊要求可留空或填写服务方默认值
- 访问模式:选择公开读/匿名访问,关闭强制签名校验选项
- 文件存储路径:按需填写,不需要自定义分类路径的可以留空
六、更简单的方案
如果不想自己搭建维护MinIO等自建对象存储服务,也不想折腾复杂的底层权限配置和服务器运维,可以直接选择市面上成熟的兼容S3协议的云对象存储服务,这类服务通常已经预设了公开访问的配置选项,不需要自己手动调整底层权限规则,新手也可以快速完成配置。
如果你需要一个兼容S3协议、适合图床、网站附件存储、资源下载分发的对象存储服务,可以了解七彩云对象存储,它支持一键配置存储桶公开访问权限,适合需要低门槛接入S3存储的开发者和站长使用。
七、FAQ
1. 设置了存储桶公开访问后,之前上传的图片也能公开访问吗?
通常情况下,只要之前上传的图片没有单独设置私有权限,会默认继承存储桶的公开读权限,无需额外调整;如果有部分图片之前单独设置了私有权限,需要单独修改这些文件的权限为公开读即可。
2. 公开访问的图片会不会有被盗刷流量的风险?
会存在盗刷流量的风险,建议在配置公开访问的同时,开启存储桶的防盗链规则,限制允许访问的域名来源,同时设置流量告警阈值,避免异常流量产生过高费用。
3. 能不能只让部分图片公开访问,其他图片保持私有?
可以实现,你可以先把存储桶整体设置为私有访问,然后单独给需要公开的图片设置公共读权限,或者通过生成临时签名链接的方式给指定用户开放临时访问权限,既能满足部分图片公开的需求,也能保证其他文件的安全性。
4. 第三方程序对接后生成的图片链接无法访问是什么原因?
首先检查链接是否拼接错误,部分程序会自动在链接中加上多余的路径前缀;其次确认存储桶的自定义域名是否已经完成备案和解析,如果使用服务默认的测试域名可能存在访问限制或带宽限制。
八、总结
整体来看,对象存储设置图片公开访问的核心流程就是先调整存储桶的公共读权限,再获取S3接入参数完成客户端或第三方程序的配置,最后测试访问链路是否正常即可,整体操作门槛不高,熟悉控制台操作的用户10分钟左右即可完成配置。这个方案适合图床搭建、网站图片附件存储、资源站素材公开分发、小程序图片存储等多种场景,不管是直接通过控制台操作还是通过PicGo、WordPress、Alist等第三方程序对接,都可以按照上述步骤完成配置。如果是新手用户或者不想花费精力维护自建存储,选择成熟的S3兼容云对象存储服务可以大幅降低配置和运维成本。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网