本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 中的多個套件名稱包含 。 v2
v2
在這種情況下,使用 通常表示套件中的程式碼是針對使用 第 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 中,設定程式方法名稱不包含 set
或 with
字首。例如, 現在*.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>