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

AWS S3 Bucket删除对象失败,报403 Access Denied错误

解决S3对象删除403 Access Denied问题

针对删除S3对象时返回403 (Forbidden)、抛出Uncaught (in promise) AccessDenied: Access Denied异常的情况,结合你的Bucket策略及其他操作正常的现象,可按以下方向排查解决:

1. 检查Bucket的Block Public Access设置

若Bucket开启了Block all public access或其中的Block public access to buckets and objects granted through any access control lists (ACLs)/Block public access to buckets and objects granted through new public bucket policies选项,会直接覆盖当前Bucket策略,阻止公共访问操作。

  • 进入S3控制台,找到目标Bucket,切换到「权限」标签页
  • 查看「Block public access」设置,按需调整限制选项

2. 补充Bucket级别的Resource权限

你的Bucket策略仅指定了对象级资源arn:aws:s3:::MY_BUCKET_NAME/*,部分删除场景(如批量删除前的s3:ListBucket权限校验)需要Bucket级别的权限支持。修改策略如下:

{
    "Version": "2012-10-17",
    "Id": "Policy1643194772258",
    "Statement": [
        {
            "Sid": "Stmt1628194965425",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::MY_BUCKET_NAME",
                "arn:aws:s3:::MY_BUCKET_NAME/*"
            ]
        }
    ]
}

3. 验证CORS配置(前端直接调用场景)

如果是通过浏览器前端直接调用S3 API删除对象,需确保Bucket的CORS配置允许DELETE方法:

  • 在Bucket「权限」标签页找到「Cross-origin resource sharing (CORS)」
  • 确认配置包含DELETE方法,示例如下:
<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

4. 检查Bucket版本化状态

若Bucket开启了版本化,默认删除操作仅会添加删除标记;若需彻底删除对象版本,需确认无额外权限限制(你的策略中s3:*已包含s3:DeleteObjectVersion权限,但需排查是否有其他规则冲突)。

5. 排查IAM权限冲突

如果使用IAM用户/角色访问S3,除Bucket策略外,需检查IAM策略是否存在Deny语句限制删除操作——IAM的Deny规则会优先于Bucket策略的Allow规则生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:30:58