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

通过CloudFront访问第二个S3源时遇访问拒绝问题求助

问题原因及解决方案

1. 路径前缀未被剥离,S3中无对应资源

当访问/primary/*或/secondary/*路径时,CloudFront会将完整路径(包括/primary/前缀)转发到对应S3存储桶。如果你的S3桶内未创建primary/secondary文件夹,也没有对应路径的文件,S3会直接返回403访问拒绝。

解决方法:

  • 方案一:在两个S3桶中分别创建primary、secondary文件夹,将对应HTML文件放入匹配的文件夹内。
  • 方案二:通过路径重写剥离前缀后再转发到S3:
    • 使用Lambda@Edge的Origin Request触发器编写代码移除路径前缀(例如把/primary/index.html转换为/index.html)。

2. 默认缓存行为指向故障转移源组

你配置的默认缓存行为target_origin_id为Origin_Group_S3,这个源组采用故障转移模式:只有当主源(第一个S3桶)返回403/404/500/502状态码时,才会切换到第二个桶。因此直接访问域名(触发默认行为)时,会优先加载第一个桶的index.html,这是当前配置的预期行为。若需默认行为访问其他内容,需调整默认缓存行为的target_origin_id。

3. 检查S3桶的OAI权限配置

虽然你为两个S3桶分别配置了OAI,但需确保每个OAI对应的S3桶政策正确授权CloudFront访问权限。示例政策(替换对应OAI ARN和桶名):

{
  "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/*"
    }
  ]
}

额外注意

修改配置后,需手动刷新CloudFront缓存(Invalidation),避免旧缓存规则影响新配置生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:44:54