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

CloudFront路径模式配置需求:S3用户目录文件权限差异化设置

解决CloudFront针对S3用户目录的访问控制配置问题

我来帮你搞定这个CloudFront路径规则的配置问题,你之前遇到的问题大概率是路径模式写法不对,或者行为优先级没理清楚,咱们一步步来配置:

核心逻辑前提

CloudFront的行为规则是从上到下匹配的,所以一定要把「公开访问」的规则放在「默认私有」规则的前面,不然默认规则会先拦截所有请求,公开规则就失效了。另外,记得用CloudFront的Origin Access Identity(OAI)来访问S3,不要给S3桶开公开权限,所有访问都通过CloudFront走,这样权限控制更安全。


第一步:创建「用户目录下图片公开访问」的行为

这个行为要匹配所有用户根目录下的.jpg和.png文件:

  • 路径模式分别设置为 /*/*.jpg 和 /*/*.png(CloudFront不支持/*.{jpg,png}这种扩展写法,所以得创建两个独立行为,分开写更清晰)
  • 关键配置:在「Restrict Viewer Access (Use Signed URLs or Signed Cookies)」选项里选择 No,允许公开访问
  • 确保这个行为的源指向你的S3存储桶,并且已经关联了正确的OAI

第二步:创建「默认私有访问」的行为

这是兜底规则,匹配所有未被前面行为覆盖的请求:

  • 路径模式设置为 *(这是CloudFront的默认路径模式,匹配所有剩余请求)
  • 关键配置:在「Restrict Viewer Access」选项里选择 Yes,然后配置你的信任签名者(可以用CloudFront密钥对或者密钥组,根据你的签名URL生成方式来选)
  • 其他配置保持默认即可

必须注意的S3桶策略配置

为了让CloudFront能正常拉取S3资源,你的S3桶策略要给OAI授予读取权限,示例策略如下(替换成你的OARN和桶名):

{
  "Version": "2008-10-17",
  "Id": "PolicyForCloudFrontPrivateContent",
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity YOUR-OAI-ID"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

不要给S3桶设置任何公开访问权限,所有访问都通过CloudFront的行为规则来控制。


测试验证

配置完成后,你可以做两个测试:

  • 访问用户目录下的图片:比如https://your-cloudfront-domain/1233233/avatar.jpg,应该能直接打开,不需要签名URL
  • 访问用户目录下的子文件/子目录:比如https://your-cloudfront-domain/1233233/docs/invoice.pdf,会返回403 Forbidden,只有用签名URL才能正常访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:27:40