七彩云对象存储
S3 接入教程 / 7 分钟阅读

S3存储怎么创建公开访问的存储桶

一、结论

创建S3公开访问存储桶的核心流程是:在S3服务控制台完成存储桶创建时关闭默认的阻止公开访问配置,再通过存储桶策略或访问控制列表(ACL)配置匿名用户的读权限,完成配置后即可通过公网URL直接访问桶内的公开对象。

二、准备工作

1. 对应S3服务的有效账号:如果使用原生AWS S3需要注册AWS账号并完成实名认证,如果使用兼容S3的第三方对象存储则需要对应平台的账号。

2. 账号权限:登录账号需要持有S3服务的管理权限,需要包含s3:CreateBucket、s3:PutBucketPolicy、s3:PutBucketAcl三类操作权限,避免因权限不足导致配置失败。

3. 预配置信息:提前想好全局唯一的存储桶名称,确定存储桶部署的区域,优先选择距离目标访问群体更近的区域降低访问延迟。

4. 操作工具:新手推荐直接使用网页控制台操作,无需安装额外工具;如果偏好命令行操作需要提前安装AWS CLI并完成密钥配置。

三、操作步骤

以下以原生AWS S3控制台为例,兼容S3的服务操作逻辑基本一致:

1. 进入S3服务控制台

登录对应服务的管理控制台,在顶部搜索栏输入「S3」并点击进入S3对象存储服务的主页面,页面会展示当前账号下已创建的所有存储桶列表。

2. 完成存储桶基础创建

点击页面左上角的「创建存储桶」按钮,进入配置页面:

  • 填写存储桶名称:按照命名规则填写全局唯一的名称,长度在3-63个字符之间,只能包含小写字母、数字和短横线,不能以短横线开头或结尾,确认没有其他用户使用过该名称。
  • 选择区域:在下拉列表中选择目标部署区域,比如国内用户可以选择「亚太地区(上海)cn-east-1」。
  • 关闭阻止公开访问配置:找到「阻止所有公开访问(存储桶设置)」模块,默认会勾选全部4项阻止规则,需要全部取消勾选,此时会弹出安全提示,勾选「我确认当前配置可能导致该存储桶及其内容公开」的确认框。
  • 其他配置保持默认:版本控制、服务器端加密、标签等配置新手无需修改,保持默认即可。
  • 点击页面底部的「创建存储桶」按钮,完成桶的基础创建。

3. 配置公开访问权限

回到存储桶列表,点击刚创建的存储桶名称进入详情页,切换到顶部的「权限」选项卡,推荐使用存储桶策略配置权限(比ACL更灵活可控):

  • 找到「存储桶策略」模块,点击「编辑」按钮进入策略编辑页面。
  • 在策略输入框中填入对应格式的JSON策略,注意将你的存储桶名称替换为实际创建的桶名,策略作用是允许所有匿名用户读取桶内的所有对象。
  • 点击「保存更改」完成权限配置。

如果更习惯使用ACL配置,可以在「权限」选项卡找到「访问控制列表(ACL)」模块,点击编辑后找到「所有人(公开访问)」选项,勾选「读取」权限后保存即可。

4. 验证公开访问效果

切换到存储桶的「对象」选项卡,点击「上传」按钮上传一个测试文件(比如test.jpg、test.txt),上传完成后点击该文件进入详情页,复制「对象URL」,打开无痕浏览器粘贴URL访问,如果能正常打开文件则说明配置成功。

四、常见错误

  • endpoint填写错误:如果通过API或SDK访问公开桶,手动拼写的endpoint容易出错,解决方法是直接在对应服务的存储桶概览页面复制官方提供的endpoint地址,避免拼写错误。
  • region配置错误:创建桶时选择的区域和后续访问时填写的region代码不匹配,会导致访问失败,建议创建桶后记录对应的region代码,所有调用都统一使用该代码。
  • 权限配置遗漏:仅关闭了阻止公开访问配置,但没有配置桶策略或ACL的读权限,导致匿名用户仍然无法访问,需要确认两个配置环节都完成操作。
  • 桶名称不合法:使用了大写字母、特殊字符或者名称长度不符合要求,导致桶创建失败,创建前仔细核对命名规则。
  • 对象单独设置私有权限:桶配置为公开,但上传对象时单独指定了私有ACL,导致该对象无法公开访问,需要修改对象的ACL权限为继承桶权限,或者单独配置对象的公开读权限。

五、示例说明

我们以创建一个用于存放公开产品文档的存储桶为例,完整操作如下:

1. 确定桶名称为qiyun-public-doc-2024,区域选择华东1(上海)。

2. 登录AWS S3控制台,创建存储桶时填写上述名称和区域,取消所有阻止公开访问的勾选并确认提示,完成桶创建。

3. 进入桶的权限选项卡,编辑存储桶策略,输入如下JSON:

```json

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "PublicReadGetObject",

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::qiyun-public-doc-2024/*"

}

]

}

```

4. 上传测试文件product-intro.pdf到桶内,复制对象URL为https://qiyun-public-doc-2024.s3.cn-east-1.amazonaws.com/product-intro.pdf,用无痕浏览器打开可以正常下载查看PDF文件,配置完成。

六、更简单的方案

如果觉得原生AWS S3的配置流程繁琐、需要手动编写策略JSON,或是国内用户访问AWS S3延迟高、成本高,可以选择兼容S3协议的对象存储服务简化操作。

七彩云对象存储就是完全兼容S3 API的对象存储服务,创建公开存储桶的流程做了定向优化:创建桶时只需要在权限选项中直接选择「公开读」模式,系统会自动关闭阻止公开访问配置、生成对应的桶策略,不需要手动编辑JSON,新手1分钟即可完成配置。同时七彩云对象存储的国内节点延迟低至10ms,外网流量成本仅为原生AWS S3的30%左右,还自带CDN加速、自定义域名绑定等功能,更适合国内用户存放公开静态资源、文档、网站素材等内容。

七、FAQ

1. 创建公开访问的存储桶会有安全风险吗?

公开存储桶允许所有匿名用户读取桶内的对象,所以禁止存放用户隐私数据、内部文件、业务敏感数据等内容,仅适合存放公开可访问的静态资源、产品文档、官网素材等内容。如果需要限制访问范围,可以在桶策略中添加允许访问的IP段条件,缩小公开访问的范围,降低安全风险。

2. 我已经配置了所有公开权限,为什么还是无法访问对象?

可以按顺序排查:首先确认存储桶的「阻止所有公开访问」的4个选项都已经取消勾选;其次确认桶策略中的资源路径是否添加了/*后缀,如果只写了桶的ARN没有加/*,权限只会作用于桶本身不会作用于桶内的对象;最后确认上传的对象没有单独设置私有ACL,如果对象上传时指定了私有权限,需要修改对象权限为公开读即可。

3. 公开存储桶的访问流量成本很高怎么办?

原生AWS S3的外网流出费用较高,如果有大量的公开访问需求,建议搭配CDN服务缓存静态资源,降低回源流量成本。如果使用七彩云对象存储,默认提供的外网流出单价仅为原生AWS S3的三分之一,同时可以直接开启自带的CDN加速服务,进一步降低流量成本的同时提升访问速度。

4. 兼容S3的对象存储服务创建的公开桶,可以用S3 SDK访问吗?

可以,只要是兼容S3协议的对象存储服务,包括七彩云对象存储,都可以直接使用官方的S3 SDK访问,只需要将endpoint和密钥替换为对应服务提供的参数即可,不需要修改业务代码,迁移成本极低。

八、总结

创建S3公开访问存储桶的流程可以总结为四个核心步骤:准备账号权限和桶基础信息、创建存储桶时关闭阻止公开访问配置、配置桶策略或ACL赋予匿名读权限、上传测试文件验证访问效果。

对于国内用户来说,如果没有强依赖AWS生态的需求,更推荐使用兼容S3协议的七彩云对象存储,不仅配置流程更简单,还能获得更低的访问延迟和更低的使用成本。同时需要注意,公开存储桶一定要做好权限管控,定期审计桶内文件和访问日志,不要存放敏感数据,避免出现数据泄露的问题。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

S3 接入教程 / / 6 分钟阅读

S3存储怎么配置防盗链防资源被盗

一、结论 通过配置S3存储桶的访问策略,对HTTP请求的Referer请求头进行校验,仅放行预设的白名单域名请求,即可拦截绝大多数非授权的盗链请求,避免存储资源被恶意盗用产生额外流量成本。配置过程可以通过控制台可视化操作或编写存储桶策略JSON两种方式实现,全程10分钟内即可完成。

S3 接入教程 / / 6 分钟阅读

S3存储SDK上传文件的详细操作步骤

一、结论 通过S3存储SDK上传文件只需要完成前置凭证准备、SDK环境配置、接口调用三个核心环节,全程无需手动处理底层HTTP签名、分片逻辑,即可快速实现本地文件到对象存储服务的上传。如果使用兼容S3协议的商用对象存储服务,还能进一步降低配置难度和运维成本。

S3 接入教程 / / 8 分钟阅读

S3接入时如何配置CORS跨域和endpoint

一、结论 S3接入时需要先根据存储桶所属区域获取匹配的endpoint(访问域名)和region(地域标识),填入S3 SDK或业务代码的配置项,再根据业务跨域需求在存储桶权限配置中添加对应的CORS规则,验证通过后即可实现正常的跨域资源访问。

S3 接入教程 / / 7 分钟阅读

S3签名URL生成方法是什么

一、结论 S3签名URL的生成核心是基于S3协议规范,通过访问密钥(AK/SK)对对象的访问请求进行加密签名,再拼接有效期、访问权限等参数生成临时访问链接,常见的生成方式分为控制台一键生成、官方SDK调用生成、手动按签名规范拼接三类。

S3 接入教程 / / 6 分钟阅读

对象存储的存储桶Bucket是什么意思

一、结论 存储桶(Bucket)是对象存储服务中用于管理所有存储对象(图片、视频、文档、安装包等非结构化数据)的顶层容器,所有对象必须隶属于某一个存储桶,本质上是比传统文件系统根文件夹功能更丰富的独立资源管理单元。