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

如何在Spring Boot中配置AWS临时凭证?尝试基础类遇请求执行错误

在Spring Boot中配置AWS临时STS凭证访问资源

依赖准备

先确保项目引入对应AWS SDK依赖,以Maven为例:

兼容BasicSessionCredentials的AWS SDK v1

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId> <!-- 替换为你需要的服务SDK,比如ec2、sts等 -->
    <version>1.12.500</version> <!-- 使用最新稳定版 -->
</dependency>

官方推荐的AWS SDK v2(更轻量)

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId> <!-- 替换为目标服务 -->
    <version>2.25.0</version> <!-- 最新稳定版 -->
</dependency>

临时凭证配置实现

注意:你提到的AWS_SESSION_ID是临时凭证的附属标识,无需单独配置,核心需配置的三个参数为AWS_ACCESS_KEY_ID(对应你说的AWS_ACCESS_KEY)、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN,以下是几种配置方式:

方式1:手动构建AWS客户端(SDK v1)

直接通过代码创建带临时凭证的客户端:

import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AwsV1Config {

    @Value("${aws.access-key-id}")
    private String accessKeyId;

    @Value("${aws.secret-access-key}")
    private String secretAccessKey;

    @Value("${aws.session-token}")
    private String sessionToken;

    @Bean
    public AmazonS3 amazonS3Client() {
        // 构造临时会话凭证
        BasicSessionCredentials sessionCreds = new BasicSessionCredentials(
                accessKeyId,
                secretAccessKey,
                sessionToken
        );

        return AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(sessionCreds))
                .withRegion("us-east-1") // 替换为你的资源所在区域
                .build();
    }
}

方式2:Spring Boot自动配置(推荐)

通过配置文件注入凭证,无需手动构建客户端(需额外引入spring-cloud-starter-aws依赖):
application.yml配置:

aws:
  access-key-id: ${AWS_ACCESS_KEY_ID}
  secret-access-key: ${AWS_SECRET_ACCESS_KEY}
  session-token: ${AWS_SESSION_TOKEN}
cloud:
  aws:
    region:
      static: us-east-1 # 你的AWS区域

直接注入客户端即可使用:

import com.amazonaws.services.s3.AmazonS3;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AwsResourceService {

    private final AmazonS3 amazonS3;

    @Autowired
    public AwsResourceService(AmazonS3 amazonS3) {
        this.amazonS3 = amazonS3;
    }

    // 示例:列出S3桶
    public void listBuckets() {
        amazonS3.listBuckets().forEach(bucket -> System.out.println(bucket.getName()));
    }
}

方式3:AWS SDK v2实现(官方推荐)

v2版本的凭证配置更简洁,代码如下:

import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AwsV2Config {

    @Value("${aws.access-key-id}")
    private String accessKeyId;

    @Value("${aws.secret-access-key}")
    private String secretAccessKey;

    @Value("${aws.session-token}")
    private String sessionToken;

    @Bean
    public S3Client s3Client() {
        AwsSessionCredentials sessionCreds = AwsSessionCredentials.create(
                accessKeyId,
                secretAccessKey,
                sessionToken
        );

        return S3Client.builder()
                .credentialsProvider(StaticCredentialsProvider.create(sessionCreds))
                .region(Region.of("us-east-1"))
                .build();
    }
}

排查「Unable to execute Http request」错误

这个错误大概率和凭证配置无关,常见排查方向:

  • 网络连通性:检查应用服务器能否访问AWS服务端点(比如是否在私有网络、是否有代理/防火墙拦截)
  • 凭证有效性:确认临时凭证未过期,且拥有访问目标资源的IAM权限
  • 区域配置错误:客户端配置的区域必须和目标资源所在区域一致
  • SDK版本冲突:检查项目中是否存在多个版本的AWS SDK依赖,导致兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:09:35