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

使用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模式、原生异步支持、模块化架构)
  • 第三方开源库
    • Apache Commons VFS:提供统一文件系统接口,支持同时操作S3和本地文件、FTP等多种存储源,适合多场景兼容需求
    • JetS3t:早期S3客户端库,目前维护频率较低,但仍有部分遗留项目在使用
    • Spring Cloud AWS:基于Spring生态封装,简化Spring项目中S3的集成,支持自动配置、注解驱动等特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:50:32