使用AWS Java SDK连接S3:缺失GetObjectRequest.Builder类及相关疑问
AWS S3 Java依赖与GetObjectRequest.Builder相关问题解答
一、GetObjectRequest.Builder的位置说明
你当前使用的是AWS Java SDK v1.x(依赖aws-java-sdk-s3:1.12.282),这个版本里并没有GetObjectRequest.Builder类——Builder模式是AWS Java SDK v2.x才引入的API设计规范。
在v1.x版本中,构建GetObjectRequest的正确方式就是你现在用的构造方法调用:
S3Object object = s3.getObject(new GetObjectRequest(bucketName, keyDoc));
也可以用类的静态链式方法创建:
GetObjectRequest request = GetObjectRequest.withBucketName(bucketName).withKey(keyDoc); S3Object object = s3.getObject(request);
如果需要使用GetObjectRequest.Builder,必须切换到AWS Java SDK v2.x的S3依赖,对应的Maven依赖配置如下:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.20.0</version> <!-- 可替换为最新稳定版本 --> </dependency>
在v2.x中,GetObjectRequest.Builder属于software.amazon.awssdk.services.s3.model包,使用示例:
GetObjectRequest request = GetObjectRequest.builder() .bucket(bucketName) .key(keyDoc) .build();
二、连接S3的可用Java库
目前常用的连接AWS S3的Java库主要分为两类:
- 官方SDK
- v1.x:
aws-java-sdk-s3,老牌全功能SDK,API风格偏传统,兼容大量旧项目代码 - v2.x:
software.amazon.awssdk:s3,官方主推的新版本,采用现代化设计(Builder模式、原生异步支持、模块化架构)
- v1.x:
- 第三方开源库
- Apache Commons VFS:提供统一文件系统接口,支持同时操作S3和本地文件、FTP等多种存储源,适合多场景兼容需求
- JetS3t:早期S3客户端库,目前维护频率较低,但仍有部分遗留项目在使用
- Spring Cloud AWS:基于Spring生态封装,简化Spring项目中S3的集成,支持自动配置、注解驱动等特性
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

