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

使用S3+CloudFront配置重定向遇“Access Denied”错误求助

问题排查与解决方案

1. 修正CloudFront与S3的权限配置

因为你禁用了S3 ACL,必须确保CloudFront通过Origin Access Control (OAC) 访问S3桶,同时桶策略要正确授权:

  • 先确认CloudFront分发已关联OAC,且OAC的配置中“签名版本”选v4,“访问类型”选“签名请求(适合无ACL的桶)”。
  • 替换并应用以下桶策略(需替换YOUR_ACCOUNT_ID和YOUR_CLOUDFRONT_DIST_ID):
{
  "Version": "2008-10-17",
  "Id": "PolicyForCloudFrontPrivateContent",
  "Statement": [
    {
      "Sid": "AllowCloudFrontAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example.com/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::YOUR_ACCOUNT_ID:distribution/YOUR_CLOUDFRONT_DIST_ID"
        }
      }
    }
  ]
}

注意:Resource必须包含/*,否则CloudFront无法访问桶内的重定向相关对象。

2. 确认S3静态网站托管配置

  • 确保S3桶已开启静态网站托管,如果是全站重定向,选择“重定向请求到另一个主机名”,填写目标域名,并将“协议”设为HTTPS(避免HTTP/HTTPS混合问题)。
  • CloudFront的源域名必须使用S3静态网站托管的域名(格式如example.com.s3-website-<region>.amazonaws.com),而非S3 REST API域名(example.com.s3.amazonaws.com)——后者不会触发S3的重定向规则。

3. 调整CloudFront分发的关键配置

  • 备用域名(CNAME):确认example.com和www.example.com已添加,且SSL证书包含这两个域名的SAN条目(证书必须覆盖所有备用域名)。
  • 行为配置:
    • 路径模式设为/*,覆盖所有请求路径;
    • 源请求策略选择Managed-CORS-S3Origin或自定义策略,确保包含Host头(S3静态网站依赖该头识别桶);
    • 查看器协议策略设为Redirect HTTP to HTTPS,强制所有请求使用HTTPS;
    • 缓存策略避免缓存错误响应,可临时将错误页面TTL设为0,排查时避免旧缓存干扰。

4. 定位Access Denied的具体原因

  • 开启CloudFront实时日志或S3访问日志,查看请求的Host头、请求路径、以及权限拒绝的具体细节。常见问题包括:
    • 桶策略的Resource范围不匹配;
    • OAC未正确关联到CloudFront分发;
    • S3静态网站托管未启用,导致重定向规则未生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:10:27