S3 Bucket删除对象提示Access Denied问题求助
你遇到的错误信息如下:
{ "Code": "Access Denied", "Message": "Access Denied" }
以下是针对性的排查和解决步骤:
优先检查IAM实体(用户/角色)的权限:S3的权限生效是Bucket Policy与IAM实体权限的交集,哪怕Bucket Policy配置了删除权限,如果IAM用户/角色的权限策略未包含
s3:DeleteObject、s3:DeleteObjects,或者存在明确的Deny语句,都会触发访问拒绝。直接查看对应IAM实体的权限策略,确认删除权限已被允许且无阻断规则。检查Bucket版本控制状态:如果Bucket开启了版本控制,调用
deleteObject默认仅添加删除标记,而非真正删除对象;若要彻底删除版本化对象,需要额外配置s3:DeleteObjectVersion权限。可先关闭版本控制测试,或给权限策略补充该Action。核对对象ACL设置:对象自身的ACL优先级高于Bucket Policy,如果目标对象的ACL未授予当前IAM实体删除权限,即使Bucket Policy允许,也会被拒绝。进入对象详情页查看ACL,确认已赋予对应权限。
检查Bucket Policy的条件限制:查看Bucket Policy是否包含
Condition语句(比如IP白名单、请求标签匹配、时间范围限制等),如果当前请求不满足这些条件,即使Action包含删除权限,也会触发访问拒绝。排查公有访问拦截设置:确认Bucket的“阻止所有公有访问”配置中,没有拦截跨账号或指定实体的访问请求,尤其是使用外部账号IAM实体操作时,该设置可能会阻断权限生效。
内容的提问来源于stack exchange,提问作者Mohamed A.Ismaiel

