AWS SDK for Java 1.x 和 2.x 之間的差異 - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS SDK for Java 1.x 和 2.x 之間的差異

本節說明將應用程式從 1.x AWS SDK for Java 版轉換為 2.x 版時需要注意的主要變更。

套件名稱變更

從 SDK for Java 1.x 到 SDK for Java 2.x 的明顯變更是套件名稱變更。套件名稱以 SDK 2.x software.amazon.awssdk開頭,而 SDK 1.x 使用 com.amazonaws

這些相同的名稱會將 Maven 成品從 SDK 1.x 區分為 SDK 2.x。2.x SDK 的 Maven 成品使用 software.amazon.awssdk groupId,而 SDK 1.x 使用 com.amazonaws groupId。

有些時候,您的程式碼需要com.amazonaws依賴於原本僅使用 2.x SDK 成品的專案。其中一個範例是當您使用伺服器端 時 AWS Lambda。這在本指南稍早的設定 Apache Maven 專案區段中顯示。

注意

1.x SDK 中的多個套件名稱包含 。 v2v2 在這種情況下,使用 通常表示套件中的程式碼是針對使用 第 2 版服務。

由於完整套件名稱以 開頭com.amazonaws,因此這些都是 SDK 1.x 元件。1.x SDK 中這些套件名稱的範例包括:

  • com.amazonaws.services.dynamodbv2

  • com.amazonaws.retry.v2

  • com.amazonaws.services.apigatewayv2

  • com.amazonaws.services.simpleemailv2

將 2.x 版新增至您的專案

Maven 是使用 AWS SDK for Java 2.x 管理相依性的建議方法。若要將 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 中,設定程式方法名稱不包含 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();

模型類別名稱

代表服務回應的模型類別名稱在 v2 Response中以 結尾,而不是Result該 v1 使用。

範例 代表 v1 中回應的類別名稱
CreateApiKeyResult AllocateAddressResult
範例 代表 v2 中回應的類別名稱
CreateApiKeyResponse AllocateAddressResponse

程式庫和公用程式的遷移狀態

SDK 適用於 Java 程式庫和公用程式

下表列出適用於 Java 的 程式庫和公用程式SDK的遷移狀態。

1.12.x 版名稱 2.x 版名稱 自 2.x 版本以來
DynamoDBMapper DynamoDbEnhancedClient 2.12.0
等待程式 等待程式 2.15.0
CloudFrontUrlSigner, CloudFrontCookieSigner CloudFrontUtilities 2.18.33
TransferManager S3TransferManager 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 Client 端緩衝 Amazon API的自動請求批次處理 SQS 2.28.0
Progress Listeners Progress Listeners 尚未發佈

相關程式庫

下表列出單獨發行的程式庫,但適用於 Java 2.x SDK版 。

與SDK適用於 Java 的 2.x 版搭配使用的名稱 自版本
Amazon S3 加密用戶端 3.0.01
AWS DynamoDB 的資料庫加密用戶端 3.0.02

1Amazon S3 的加密用戶端可以使用下列 Maven 相依性。

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

2DynamoDB 的 AWS Database Encryption Client 可使用下列 Maven 相依性。

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

程式庫和公用程式的遷移詳細資訊