You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启S3公共访问拦截后Cloudfront访问S3资源返回AccessDenied如何解决

完全可以在保持S3全部公共访问拦截开启的状态下,通过Cloudfront正常访问S3内的资源,无需关闭任何公共拦截选项。

问题根因

你遇到的AccessDenied报错,本质是Cloudfront没有获取到访问S3存储桶的合法权限,之前关闭公共访问拦截的操作属于不安全的绕路方案,正确方案是通过Cloudfront源访问控制(OAC)配置专属访问权限。

具体配置步骤
  • 打开Cloudfront控制台,进入你当前使用的分发配置页,切换到「源」标签,编辑对应S3存储桶的源配置
  • 在「源访问」分类下选择 源访问控制(OAC),如果没有已创建的OAC,点击「创建控制设置」,名称自定义即可,其余参数保持默认
  • 保存Cloudfront的源配置修改,此时页面会自动生成适配你当前资源的S3桶策略,复制这段策略内容备用
  • 进入对应S3存储桶的「权限」配置页,找到桶策略编辑模块,把复制的策略粘贴保存(如果桶内已有其他策略,需合并规则不要直接覆盖)
  • 确认S3的「公共访问拦截」四个选项全部保持开启状态
验证效果

配置完成后等待1-3分钟让Cloudfront配置生效,再访问XXX.cloudfront.net/folder/image.jpg就可以正常加载资源,不会再返回权限报错。

方案原理

OAC是AWS官方提供的Cloudfront专属访问S3的权限方案,相当于给Cloudfront开通了S3访问白名单,所有公共访问请求依然会被S3的公共访问拦截规则拦下,只有来自对应Cloudfront分发的合法请求可以获取到存储桶内的资源,安全性远高于放开公共访问权限的方案。

内容的提问来源于stack exchange,提问作者AWShelpme112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:04