AWS SDK for Java 1.x と 2.x の相違点
このセクションでは、AWS SDK for Java バージョン 1.x の使用からバージョン 2.x の使用にアプリケーションを変換するために注意すべき主要な変更点を説明しています。
パッケージ名の変更
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 を使用します。
SDK 2.x のアーティファクトのみを使用するプロジェクトの com.amazonaws 依存関係がコードに必要になる場合があります。その一例が、サーバーサイド AWS 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 の追加
AWS SDK for Java 2.x を使用する場合には、Maven が依存関係を管理するために推奨される方法です。バージョン 2x のコンポーネントをプロジェクトに追加するには、SDK の依存関係で pom.xml ファイルを更新します。
<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 に移行するときに、バージョン 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();
セッターメソッドとゲッターメソッド
AWS SDK for Java 2.x では、設定メソッド名に set または with プレフィックスを含めることはできません。たとえば、*.withEndpoint() は現在 *.endpoint() です。
ゲッターメソッド名は 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 でゲッターメソッドを使用する場合
String token = request.getNextToken();
例 2.x でゲッターメソッドを使用する場合
String token = request.nextToken();
モデルクラス名
サービスレスポンスを表すモデルクラス名は、v2 では v1 で使用される Response ではなく、Result で終わります。
例 v1 でのレスポンスを表すクラス名
CreateApiKeyResult AllocateAddressResult
例 v2 でのレスポンスを表すクラス名
CreateApiKeyResponse AllocateAddressResponse
ライブラリとユーティリティの移行状況
SDK for Java ライブラリとユーティリティ
次の表は、SDK for Java のライブラリとユーティリティの移行ステータスを示しています。
| バージョン 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 Policy Builder | IAM Policy Builder | 2.20.126 |
| S3 イベント通知 | S3 イベント通知 | 2.25.11 |
| Amazon SQS のクライアント側のバッファリング | Amazon SQS の自動リクエストバッチ処理 API | 2.28.0 |
| 進行状況のリスナー | 進行状況のリスナー | 未リリース |
関連ライブラリ
次の表は、個別にリリースされているものの、SDK for Java 2.x で動作するライブラリの一覧です。
| SDK for Java のバージョン 2.x で使用されている名前 | バージョン以降 |
|---|---|
| Amazon S3 暗号化クライアント | 3.0.01 |
| AWS Database Encryption SDK for DynamoDB | 3.0.02 |
1Amazon S3 暗号化クライアント
Amazon S3 の暗号化クライアントは、次の Maven 依存関係を使用して利用できます。
<dependency> <groupId>software.amazon.encryption.s3</groupId> <artifactId>amazon-s3-encryption-client-java</artifactId> <version>3.x</version> </dependency>
2AWS Database Encryption SDK for DynamoDB
AWS Database Encryption SDK for DynamoDB は、次の Maven 依存関係を使用して V2 で使用できます。
<dependency> <groupId>software.amazon.cryptography</groupId> <artifactId>aws-database-encryption-sdk-dynamodb</artifactId> <version>3.x</version> </dependency>
Java SDK の v1 で動作する DynamoDB の暗号化ライブラリに関する情報は、「AWS Database Encryption SDK デベロッパーガイド」 (「Amazon DynamoDB Encryption Client for Java」) および GitHub
Java SDK の V2 と互換性のある DynamoDB 暗号化ライブラリの詳細については、「AWS Database Encryption SDK デベロッパーガイド」と GitHub ソース
暗号化ライブラリに関する移行情報は、「AWS Database Encryption SDK デベロッパーガイド」を参照してください。