AWS SDK for Java 1.x 和 2.x 有什么区别 - AWS SDK for Java 2.x

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS SDK for Java 1.x 和 2.x 有什么区别

本节介绍将应用程序从使用 1.x 版本转换为 2.x AWS SDK for Java 版本时需要注意的主要更改。

软件包名称更改

从SDK适用于 Java 1.x 的 1.x 版到适用SDK于 Java 2.x 版的一个明显变化是软件包名称的更改。Package 名称以 software.amazon.awssdk SDK 2.x 开头,而 SDK 1.x 则使用。com.amazonaws

这些相同的名称将 Maven 工件从 SDK 1.x 区分为 2.x。SDKSDK2.x 的 Maven 工件使用 software.amazon.awssdkgroupId,而 SDK 1.x 则使用。com.amazonaws groupId

有几次,你的代码需要com.amazonaws依赖于一个原本只使用 SDK 2.x 构件的项目。这方面的一个例子是使用服务器端 AWS Lambda。本指南前面的设置 Apache Maven 项目部分对此进行了介绍。

注意

SDK1.x 中的几个软件包名称包含v2。在这种情况下,使用 v2 通常表示软件包中的代码旨在与相关服务的版本 2 配合使用。

由于软件包的完整名称以开头com.amazonaws,因此这些是 SDK 1.x 组件。SDK1.x 中这些软件包名称的示例有:

  • com.amazonaws.services.dynamodbv2

  • com.amazonaws.retry.v2

  • com.amazonaws.services.apigatewayv2

  • com.amazonaws.services.simpleemailv2

将版本 2.x 添加到您的项目

使用 AWS SDK for Java 2.x 时,推荐使用 Maven 来管理依赖关系。要向项目中添加 2.x 版本的组件,请更新您的pom.xml文件,使其依赖于。SDK

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.21</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> </dependency> </dependencies>

在将项目迁移到 2.x 版本时 side-by-side,也可以使用 1.x 和 2.x 版本。

不可变 POJOs

客户端和操作的请求和响应对象现在不可变,并且在创建之后不能更改。要重复使用一个请求或响应变量,您必须生成一个要分配给该请求或响应变量的新对象。

例 在 1.x 中更新请求对象
DescribeAlarmsRequest request = new DescribeAlarmsRequest(); DescribeAlarmsResult response = cw.describeAlarms(request); request.setNextToken(response.getNextToken());
例 在 2.x 中更新请求对象
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build(); DescribeAlarmsResponse response = cw.describeAlarms(request); request = DescribeAlarmsRequest.builder() .nextToken(response.nextToken()) .build();

设置器和获取器方法

在 AWS SDK for Java 2.x 中,setter 方法名称不包含setwith前缀。例如,*.withEndpoint() 现为 *.endpoint()

Getter 方法名称不使用前get缀。

例 在 1.x 中使用设置器方法
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("us-east-1") .build();
例 在 2.x 中使用 setter 方法
DynamoDbClient client = DynamoDbClient.builder() .region(Region.US_EAST_1) .build();
例 在 1.x 中使用 getter 方法
String token = request.getNextToken();
例 在 2.x 中使用 getter 方法
String token = request.nextToken();

模型类名

代表服务响应的模型类名以 Response v2 结尾,而不Result是 v1 使用的名称。

例 代表 v1 中响应的类名
CreateApiKeyResult AllocateAddressResult
例 代表 v2 中响应的类名
CreateApiKeyResponse AllocateAddressResponse

库和实用工具的迁移状态

SDK适用于 Java 库和实用程序

下表列出了适用于 Java 的库和实用程序SDK的迁移状态。

版本 1.12.x 中的名称 版本 2.x 中的名称 自 2.x 的以下版本起
D ynamoDBMapper DynamoDbEnhancedClient 2.12.0
Waiter Waiter 2.15.0
CloudFrontUrlSigner, CloudFrontCookieSigner CloudFrontUtilities 2.18.33
TransferManager S3 TransferManager 2.19.0
EC2元数据客户端 EC2元数据客户端 2.19.29
S3 URI 解析器 S3 URI 解析器 2.20.41
IAM策略生成器 IAM策略生成器 2.20.126
S3 事件通知 S3 事件通知 2.25.11
Amazon SQS 客户端缓冲 自动请求批处理 尚未发布
进程侦听程序 进程侦听程序 尚未发布

相关库

下表列出了单独发布但SDK适用于适用于 Java 2.x 的库。

适用于 Java 的 2.x 版本中SDK使用的名称 最低版本
Amazon S3 加密客户端 3.0.0 1
AWS 适用于 DynamoDB 的数据库加密客户端 3.0.0 2

1适用于 Amazon S3 的加密客户端可通过使用以下 Maven 依赖项获得。

<dependency> <groupId>software.amazon.encryption.s3</groupId> <artifactId>amazon-s3-encryption-client-java</artifactId> <version>3.x</version> </dependency>

2 使用以下 Maven 依赖项即可使用适用于 DynamoDB 的 AWS 数据库加密客户端。

<dependency> <groupId>software.amazon.cryptography</groupId> <artifactId>aws-database-encryption-sdk-dynamodb</artifactId> <version>3.x</version> </dependency>

库和实用程序的迁移详情