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
相关产品推荐
相关产品推荐

