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 で始まります。

これらの同じ名前は、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 の追加

Maven は、 AWS SDK for Java 2.x を使用するときに依存関係を管理するための推奨される方法です。バージョン 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 に移行するときに、バージョン 1.x と side-by-side 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() です。

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 でゲッターメソッドを使用する
String token = request.getNextToken();
例 2.x でゲッターメソッドを使用する
String token = request.nextToken();

モデルクラス名

サービスレスポンスを表すモデルクラス名は、v1 が使用するResultのではなく、v2 Responseで で終わります。

例 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
Amazon SQS のクライアント側のバッファリング 自動リクエストバッチ処理 未リリース
進行状況のリスナー 進行状況のリスナー 未リリース

関連ライブラリ

次の表は、個別にリリースされているものの、SDK for Java 2.x で動作するライブラリの一覧です。

SDK for Java のバージョン 2.x で使用されている名前 バージョン以降
Amazon S3 暗号化クライアント 3.0.01
AWS DynamoDB 用のデータベース暗号化クライアント 3.0.02

1 Amazon 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>

ライブラリとユーティリティの移行の詳細