Amazon SDK for Java 1.x 和 2.x 有什么区别 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

软件包名称更改

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

这些名称区分了 SDK 1.x 与 SDK 2.x 的 Maven 构件。SDK 2.x 的 Maven 构件使用 software.amazon.awssdk groupId,而 SDK 1.x 使用 com.amazonaws groupId。

有些时候,您的代码会要求项目具有 com.amazonaws 依赖项,而该项目原本只使用 SDK 2.x 构件。这方面的一个例子是使用服务器端 Amazon Lambda。本指南前面的设置 Apache Maven 项目部分对此进行了介绍。

注意

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

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

  • com.amazonaws.services.dynamodbv2

  • com.amazonaws.retry.v2

  • com.amazonaws.services.apigatewayv2

  • com.amazonaws.services.simpleemailv2

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

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

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.16.1</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 版本。

不可变 POJO

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

例 在 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();

设置器和获取器方法

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

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

例 在 1.x 中使用设置器方法
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("us-east-1") .build();
例 在 2.x 中使用设置器方法
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

库和实用工具的迁移状态

适用于 Java 的 SDK 库和实用工具

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

版本 1.12.x 中的名称 版本 2.x 中的名称 自 2.x 的以下版本起
DynamoDBMapper 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 policy 生成器 IAM policy 生成器 2.20.126
Amazon SQS 客户端缓存 自动请求批处理 尚未发布
进程侦听程序 进程侦听程序 尚未发布

相关库

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

适用于 Java 的 SDK 2.x 中使用的名称 最低版本
Amazon S3 加密客户端 3.0.0 1
Amazon 适用于 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 的 Amazon 数据库加密客户端。

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

库和实用程序的迁移详情