移行ツールでサポートされていないコードパターン - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

移行ツールでサポートされていないコードパターン

移行ツールは、ほとんどの v1 コードを v2 に自動的に変換します。ただし、一部のコードパターンでは手動移行が必要です。このトピックでは、サポートされていない最も一般的なパターンの詳細な例と、それらを手動で変換する方法を示します。

以下のパターンのリストは網羅的なものではありません。移行ツールの実行後にコードがコンパイルされない場合は、step-by-stepの移行手順に従って、残りの v1 コードを手動で移行します。

パラメータを使用してオブジェクトコンストラクタをリクエストする

リクエスト POJOs (Amazon S3 を除く) の場合、移行ツールはセッターメソッドのみを変換します。このツールは、パラメータを含むコンストラクタをサポートしていません。

サポートされているパターン: セッターを使用してオブジェクトをリクエストする (コンストラクタパラメータなし)

以前 (元の v1 コード):

import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest().withMessageBody("Hello World"); request.setQueueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue");

After (移行ツールの結果):

import software.amazon.awssdk.services.sqs.model.SendMessageRequest; SendMessageRequest request = SendMessageRequest.builder() .messageBody("Hello World").build(); request = request.toBuilder() .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue").build();

サポートされていないパターン: パラメータを使用してオブジェクトコンストラクタをリクエストする

移行ツールは、パラメータを持つコンストラクタを変換できません。

手動移行前、ただし移行ツール後:

import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. // This pattern requires manual migration. SendMessageRequest request = new SendMessageRequest( "https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");

移行ツールはインポートを v2 に変換しますが、コンストラクタコードは変更されず、ビルダーパターンを使用するには手動で更新する必要があります。

手動移行後:

import software.amazon.awssdk.services.sqs.model.SendMessageRequest; SendMessageRequest request = SendMessageRequest.builder() .messageBody("Hello World") .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue") .build();

個々のパラメータを使用したサービスクライアントメソッド

移行ツールは、リクエストオブジェクト (Amazon S3 を除く) の代わりに個々のパラメータを使用するサービスクライアントメソッドを変換できません。

前 (v1 コード):

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; AmazonSQS sqs = new AmazonSQSClient(); // The following v1 method takes individual parameters. sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");

After (移行ツールの結果 – コンパイルされません):

import software.amazon.awssdk.services.sqs.SqsClient; // Import updated to v2. // No import statement for the v2 request POJO. SqsClient sqs = SqsClient.builder().build(); // Does not compile–v2 methods only accept request POJOs. sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");

リクエストオブジェクトを使用するには、メソッド引数を手動で更新する必要があります。

import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Add manually. SqsClient sqs = SqsClient.builder().build(); // Corrected v2 code. SendMessageRequest request = SendMessageRequest.builder() .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue") .messageBody("Hello World") .build(); sqs.sendMessage(request);

リクエストタイムアウトメソッド

移行ツールは、リクエストオブジェクトにタイムアウトを設定するメソッドを変換しません。

前 (v1 コード):

import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest(); request.setSdkRequestTimeout(7);

After (移行ツールの結果 – コンパイルされません):

import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. SendMessageRequest request = SendMessageRequest.builder().build(); // Does not compile. request.setSdkRequestTimeout(7);

v2 の overrideConfigurationメソッドを使用するには、手動で移行する必要があります。

import software.amazon.awssdk.services.sqs.model.SendMessageRequest; import java.time.Duration; SendMessageRequest request = SendMessageRequest.builder().build(); // Corrected v2 code. request = request.toBuilder() .overrideConfiguration(o -> o.apiCallTimeout(Duration.ofSeconds(7))) .build();

パラメータを使用したサービスクライアントコンストラクタ

移行ツールは空のサービスクライアントコンストラクタを変換しますが、認証情報や設定などのパラメータを受け入れるコンストラクタを変換することはできません。

前 (v1 コード):

import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; AWSCredentials awsCredentials = new BasicAWSCredentials("akid", "skid"); AmazonSQS sqs = new AmazonSQSClient(awsCredentials);

After (移行ツールの結果 – コンパイルされません):

import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.services.sqs.SqsClient; // Import updated to v2. AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid"); // Does not compile. SqsClient sqs = new SqsClient(awsCredentials);

ビルダーパターンを使用するには、サービスクライアントコンストラクタを手動で更新する必要があります。

import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; // Add manually. import software.amazon.awssdk.services.sqs.SqsClient; AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid"); // Corrected v2 code. SqsClient sqs = SqsClient.builder() .credentialsProvider(StaticCredentialsProvider.create(awsCredentials)) .build();