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

AWS S3已配置Bucket Policy与CORS,访问URL仍遭Access Denied

问题原因及解决方案

核心原因

你的Bucket Policy仅授权给了特定IAM角色arn:aws:iam::*****:role/xyz,而浏览器直接访问对象URL属于匿名公共请求,不在该授权范围内,因此被拒绝访问。

具体配置问题分析

  1. Bucket Policy 权限范围错误
    当前策略的Principal指定了唯一的IAM角色,只有通过该角色发起的请求能访问存储桶内对象。浏览器直接打开URL时,请求没有携带任何IAM身份凭证,属于匿名访问,不符合Policy的授权条件。
    若要允许公共访问,需将Principal改为"*"(代表所有用户,包括匿名用户),同时限制权限为必要的操作(比如仅GetObject,避免授予S3:*这类过度权限)。

  2. CORS配置不影响访问权限
    你的CORS配置是正常的,但CORS仅用于控制跨域请求的浏览器行为(比如AJAX跨域调用),和对象的基础访问权限无关,无法解决本次的AccessDenied问题。

  3. 额外检查点
    虽然已关闭Block all public access,但需确认对象自身的ACL是否设置为允许公共读取。不过Bucket Policy的优先级高于对象ACL,所以核心问题仍在Bucket Policy。

修改后的Bucket Policy示例(允许匿名GET访问)

{
    "Version": "2012-10-17",
    "Statement": [
        // 新增匿名GET权限
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::test/*"
        },
        // 保留原IAM角色的全权限(如果仍需要)
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::*****:role/xyz"
            },
            "Action": "S3:*",
            "Resource": "arn:aws:s3:::test/*"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:46:05