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

AWS CloudFront图片无法公开访问,请求排查配置问题

问题描述

我有一个私有S3存储桶,配置如下:

存储桶策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EXXXXXXXXXXXXN"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::XXX-XXXXXXX-documents/*"
        }
    ]
}

CORS配置

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

CloudFront源配置

CloudFront源配置截图

通过浏览器访问图片链接时收到错误:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>BY11XVSCM74Q27NJ</RequestId>
<HostId>J7+//zcA0p86d5atEkTcE/j0u7amfjVSB431p1mKRIEPvVVEM8uDP+mRZW1cP/Zj3C0nhEtw2gk=</HostId>
</Error>

请问哪里配置出错了?


排查方案
  • 核对CloudFront源的OAI关联
    桶策略已授权指定OAI,需确认CloudFront源配置中确实启用了该OAI:

    • 检查源配置截图,确认选择了「Origin Access Identity」(或新版「Origin Access Control」),且选中的OAI ARN与桶策略中的arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EXXXXXXXXXXXXN完全一致。
    • 若源配置未使用OAI/OAC,直接允许用户访问S3,私有桶会直接拒绝请求。
  • 验证桶策略的Resource路径
    桶策略中Resource为arn:aws:s3:::XXX-XXXXXXX-documents/*,需确认:

    • 访问的图片对象确实属于该桶,且桶名拼写完全正确(大小写、字符无错误)。该路径已覆盖桶内所有对象,若访问根目录文件无需调整。
  • 检查S3对象权限冲突
    即使桶策略授权了OAI,若对象自身ACL设置了拒绝该OAI的规则,也会触发报错。可查看对象权限面板,确认无冲突的拒绝策略。

  • 清理CloudFront缓存并检查行为配置

    • 手动触发CloudFront缓存失效(Invalidation),避免旧错误响应被缓存。
    • 检查CloudFront行为配置,确认路径模式匹配图片访问路径,且允许GET方法(图片访问为GET请求)。
  • 确认S3 Block Public Access设置
    进入S3桶权限页面,查看「Block Public Access」选项。OAI作为AWS服务主体通常不受影响,但需确认未开启会完全阻断服务访问的极端配置(如「Block all public access」且无例外)。

  • 核对CloudFront源的S3域名
    源配置中的S3域名必须准确,例如XXX-XXXXXXX-documents.s3.amazonaws.com或区域专属域名(如XXX-XXXXXXX-documents.s3.us-east-1.amazonaws.com),域名错误会导致请求发送至无关桶,触发权限拒绝。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:18:20