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

调用DeleteObject遇AccessDenied:Lambda操作S3重命名文件权限问题

S3 DeleteObject 权限拒绝问题排查

你在用Lambda重命名S3桶里的图片时,执行DeleteObject操作触发了AccessDenied报错,虽然已经配置了指定的IAM策略但问题依旧,下面是几个可能的原因:

  • 桶策略限制:S3桶本身可能配置了拒绝DeleteObject的策略,IAM策略允许但桶策略拒绝的话,操作会被直接拦截。去检查下桶的权限配置,确认有没有拒绝相关操作的语句。
  • 版本控制影响:如果你的S3桶开启了版本控制,DeleteObject操作实际上只是添加一个删除标记,此时你当前策略里的s3:DeleteObject权限是足够的,但要是需要彻底删除版本化对象,还得额外添加s3:DeleteObjectVersion权限。不过你的报错是DeleteObject本身被拒,先确认桶是否开启了版本控制。
  • IAM角色关联错误:确认Lambda函数的执行角色确实是你配置了该策略的角色,别选错了角色,或者策略没正确附加到目标角色上。
  • 资源ARN不匹配:检查策略里的资源ARNarn:aws:s3:::mybucket/*,桶名mybucket要和实际桶名完全一致,ARN是严格匹配大小写的,别输错了字符。
  • VPC网络限制:如果Lambda配置了VPC,得确保VPC里配置了S3的网关端点或接口端点,不然Lambda无法正常访问S3,也会弹出AccessDenied的报错(本质是网络不通导致权限验证失败)。
  • 对象ACL限制:如果要删除的对象ACL设置为不允许当前IAM角色执行删除操作,就算IAM策略允许也没用。可以尝试修改对象ACL,或者在策略里添加s3:GetObjectAcl和s3:PutObjectAcl权限来调整。

你提供的IAM策略:

{
        "Action": [
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::mybucket/*",
        "Sid": "PutAndDelS3",
        "Effect": "Allow"
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:13:29