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

Spring Boot调用Amazon S3遇403 AccessDenied错误求助

Amazon S3 listBuckets 403权限拒绝问题排查

问题描述

在Spring Boot项目中调用Amazon S3的listBuckets()接口(当前未创建任何存储桶)时,返回如下错误:

Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied)

使用的核心代码如下:

AWSCredentials credentials = new BasicAWSCredentials(
    "myaccesskey", 
    "mysecretkey"
);

AmazonS3 s3client = AmazonS3ClientBuilder
    .standard()
    .withCredentials(new AWSStaticCredentialsProvider(credentials))
    .withRegion(Regions.US_EAST_1)
    .build();

try{
    List<Bucket> buckets = s3client.listBuckets();
    
    for(Bucket bucket : buckets) {
        response += bucket.getName();
    }
} catch (Exception exception) {
    System.out.print(exception);
}    

已尝试删除并重新创建Access Key和Secret Key,问题仍未解决。

排查及解决要点

  • 确认IAM用户权限:创建Access Key对应的IAM用户必须拥有s3:ListAllMyBuckets权限——即便没有存储桶,调用listBuckets()也需要该权限。可通过IAM控制台给用户附加AmazonS3ReadOnlyAccess策略,或自定义包含以下内容的策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "s3:ListAllMyBuckets",
                "Resource": "*"
            }
        ]
    }
    
  • 验证凭证准确性:检查Access Key和Secret Key是否输入错误,注意大小写、空格及特殊字符。也可通过AWS CLI执行aws s3 ls命令测试凭证能否正常调用接口。
  • 核对区域配置:代码中指定的US_EAST_1区域需与AWS账户默认区域匹配。虽然listBuckets是全局操作,但部分场景下区域不匹配可能触发权限问题,可尝试移除区域配置或确认账户区域设置。
  • 检查MFA状态:若IAM用户启用了多因素认证(MFA),仅用Access Key和Secret Key无法调用接口,需生成带MFA的临时凭证。
  • 确认账户状态:确保AWS账户无欠费、无访问限制等异常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:40:30