aws java如何
AWS Java SDK 简介
AWS 提供了 Java SDK 用于与 AWS 服务交互,支持开发者在 Java 应用中集成 AWS 功能,如 S3、EC2、Lambda 等。
安装 AWS Java SDK
通过 Maven 或 Gradle 添加依赖:
Maven 依赖
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.20.26</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
</dependency>
Gradle 依赖
implementation platform('software.amazon.awssdk:bom:2.20.26')
implementation 'software.amazon.awssdk:s3'
配置 AWS 凭证
使用默认凭证提供链(环境变量、~/.aws/credentials 文件等):
AwsCredentialsProvider credentialsProvider = DefaultCredentialsProvider.create();
或显式指定凭证:
AwsBasicCredentials credentials = AwsBasicCredentials.create("ACCESS_KEY", "SECRET_KEY");
使用 AWS 服务示例(S3)
列出 S3 存储桶
S3Client s3Client = S3Client.builder()
.region(Region.US_EAST_1)
.credentialsProvider(credentialsProvider)
.build();
ListBucketsResponse response = s3Client.listBuckets();
response.buckets().forEach(bucket -> System.out.println(bucket.name()));
上传文件到 S3
PutObjectRequest request = PutObjectRequest.builder()
.bucket("my-bucket")
.key("test.txt")
.build();
s3Client.putObject(request, Paths.get("local-file.txt"));
异步调用
使用异步客户端(如 S3AsyncClient)和非阻塞 IO:
S3AsyncClient asyncClient = S3AsyncClient.builder()
.region(Region.US_EAST_1)
.credentialsProvider(credentialsProvider)
.build();
asyncClient.listBuckets()
.thenAccept(response -> response.buckets().forEach(b -> System.out.println(b.name())));
错误处理
捕获 S3Exception 或其他 AWS 服务异常:

try {
s3Client.getObject(b -> b.bucket("my-bucket").key("file.txt"), ResponseTransformer.toFile(Paths.get("downloaded.txt")));
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
}
高级功能
- 分页处理:使用
paginate方法处理分页结果。 - 自定义 HTTP 客户端:通过
ApacheHttpClient或NettyNioAsyncHttpClient配置超时、代理等。 - 服务特定配置:如 DynamoDB 的
retryPolicy或 Lambda 的environmentVariables。
官方资源
通过以上方法,可以快速集成 AWS 服务到 Java 应用中。根据需求选择同步或异步客户端,并合理处理凭证与错误。






