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

CloudFront分发下S3新增页面返回403错误的解决咨询

解决CloudFront后端S3静态站新上传文件403错误的方案

1. 排查存储桶权限与文件ACL问题

你的存储桶策略仅允许CloudFront服务主体读取和写入对象,但新上传文件的默认ACL可能限制了CloudFront的访问:

  • 上传新文件时,确保文件ACL设置为继承存储桶权限,或直接为CloudFront对应的访问身份(OAI/OAC)分配读取权限。
  • 控制台上传时,在「权限」选项中勾选「授予对CloudFront OAC的访问权限」(若使用Origin Access Control),避免文件默认设为私有。

2. 清理CloudFront缓存

CloudFront可能缓存了旧的403响应,或新文件未被及时拉取:

  • 针对新上传的HTML文件路径手动触发缓存失效操作。
  • 检查缓存策略的TTL设置,确保新内容能被快速更新。

3. 修正存储桶策略的不合理配置

当前策略存在两处优化点:

  • 将策略版本从2008-10-17升级到2012-10-17,避免旧版本的IAM兼容性问题。
  • 移除不必要的s3:PutObject权限:CloudFront不会执行上传操作,该权限应分配给你的上传用户/角色,而非CloudFront服务主体。若使用OAC,策略应指定OAC的ARN作为Principal,示例如下:
{
    "Version": "2012-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "AllowCloudFrontOACAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Control Exxxxxx"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::a-test-upload/*"
        }
    ]
}

4. 检查S3静态站托管配置

  • 确认新上传的HTML文件名匹配存储桶设置的默认索引文档(比如index.html),非默认文件名需直接访问完整路径。
  • 验证存储桶静态网站托管已开启,且CloudFront源站绑定的是正确的网站端点(而非REST API端点)。

5. 确保上传身份的权限

若通过IAM用户/角色上传文件,需为该身份分配s3:PutObject权限,示例IAM策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::a-test-upload/*"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:12:13