本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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.awssdk
groupId,而 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 方法名称不包含set
或with
前缀。例如,*.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>