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

Java Spring Boot删除AWS S3对象遇Access Denied错误求助

解决AWS S3删除对象时的Access Denied(403)问题

针对你遇到的S3删除操作返回403拒绝访问的问题,按以下步骤排查解决:

1. 确认IAM用户权限

确保你的AWS Access Key对应的IAM用户拥有**s3:DeleteObject**权限,且权限策略覆盖目标Bucket和对象路径。示例策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}

注意替换YOUR_BUCKET_NAME为实际Bucket名,资源路径要包含/*以覆盖Bucket下所有对象。

2. 验证凭证配置

检查application.properties中的aws.accessKeyId和aws.secretAccessKey是否正确:

  • 无拼写错误、多余空格或特殊字符
  • 如果部署在AWS托管环境(如EKS、ECS),优先检查是否使用了IAM角色而非配置文件密钥,确保角色绑定了正确的S3权限

3. 检查Bucket策略

登录S3控制台查看目标Bucket的Bucket策略:

  • 确保没有拒绝该IAM用户执行s3:DeleteObject的规则
  • 确认策略中没有IP限制、条件限制等阻止当前请求的配置

4. 核对对象路径与Bucket名

在代码中添加日志,打印bucketName和fileName的实际值:

public void deleteFile(String fileName) {
    System.out.println("Deleting object from bucket: " + bucketName + ", key: " + fileName);
    amazonS3.deleteObject(bucketName, fileName);
}

确认:

  • Bucket名称完全匹配(区分大小写)
  • fileName是S3对象的完整键(包含前缀,如docs/report.pdf,而非仅report.pdf)

5. 检查对象ACL权限

如果目标S3对象单独设置了ACL,登录控制台查看该对象的权限:

  • 确认当前IAM用户或其所属组拥有删除该对象的权限
  • 避免对象ACL与Bucket策略、IAM权限冲突

6. 排查临时凭证问题

如果使用STS临时凭证:

  • 检查凭证是否过期
  • 确认临时凭证的权限列表包含s3:DeleteObject

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:23:11