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

通过CloudFront访问KMS加密S3静态托管桶时出现KMS.UnrecognizedClientException

S3+CloudFront访问出现403 Forbidden的原因及解决建议

常见原因与对应解决方法

1. S3存储桶权限配置问题

  • CloudFront源访问身份(OAI)未获授权:
    若使用OAI限制S3访问,必须在S3桶策略中为该OAI添加读取对象的权限。示例策略如下,替换YOUR_OAI_ID和YOUR_BUCKET_NAME为实际值:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "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/*"
        }
      ]
    }
    
  • 桶ACL或公共访问限制冲突:
    使用OAI时,直接在S3 ACL中给OAI分配读取权限即可;若需开放公共访问(不推荐生产环境),需先关闭桶的“阻止公共访问”设置,再给Everyone配置对象读取权限。
  • 公共访问被强制阻止:
    进入S3桶的“权限”页面,检查账户级和桶级的“阻止公共访问”开关,根据访问模式调整——使用OAI无需开启公共访问,需直接公开则关闭对应阻止项。

2. CloudFront分发配置错误

  • 源设置不正确:
    确认CloudFront的源域名是正确的S3桶域名(如your-bucket.s3.amazonaws.com),且在源配置中启用“源访问控制”并关联正确的OAI;未使用OAI时,需确保S3允许CloudFront访问。
  • 缓存行为或策略问题:
    检查缓存行为的路径模式(如默认/*)是否覆盖所有需访问的资源;同时确认缓存策略未设置错误的权限规则,避免请求被拦截。
  • 自定义错误页面配置失效:
    若配置了自定义403页面,需确保该页面存在于S3桶中且路径正确,否则会因找不到错误页面返回嵌套的403。

3. 资源路径或索引页问题

  • 路径大小写不匹配或资源不存在:
    S3对象键区分大小写,例如Index.html和index.html是两个不同文件,需检查请求URL路径与S3对象路径完全一致,同时确认请求的文件确实存在于桶内。
  • 索引文档未正确配置:
    需同时在S3“静态网站托管”设置中把索引文档设为index.html(或实际使用的文件名),并在CloudFront分发的“默认根对象”中设置相同文件名,确保访问根路径时能正确返回首页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:15:46