Pola kode alat migrasi yang tidak didukung - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pola kode alat migrasi yang tidak didukung

Alat migrasi secara otomatis mengonversi sebagian besar kode v1 ke v2. Namun, beberapa pola kode memerlukan migrasi manual. Topik ini memberikan contoh rinci tentang pola yang tidak didukung yang paling umum dan menunjukkan kepada Anda cara mengonversinya secara manual.

Daftar pola berikut ini tidak lengkap. Jika kode Anda tidak dikompilasi setelah menjalankan alat migrasi, ikuti petunjuk step-by-step migrasi untuk memigrasikan kode v1 yang tersisa secara manual.

Minta konstruktor objek dengan parameter

Untuk permintaan POJOs (tidak termasuk Amazon S3), alat migrasi hanya mengubah metode penyetel. Alat ini tidak mendukung konstruktor dengan parameter.

Pola yang didukung: Minta objek menggunakan setter (tidak ada parameter konstruktor)

Sebelum (kode v1 asli):

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");

Setelah (hasil alat migrasi):

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();

Pola tidak didukung: Minta konstruktor objek dengan parameter

Alat migrasi tidak dapat mengonversi konstruktor dengan parameter:

Sebelum migrasi manual, tetapi setelah alat migrasi:

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");

Alat migrasi mengubah impor ke v2, tetapi kode konstruktor tetap tidak berubah dan memerlukan pembaruan manual untuk menggunakan pola pembangun.

Setelah migrasi manual:

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();

Metode klien layanan dengan parameter individual

Alat migrasi tidak dapat mengonversi metode klien layanan yang mengambil parameter individual alih-alih objek permintaan (tidak termasuk Amazon S3).

Sebelum (kode 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");

Setelah (hasil alat migrasi — tidak dikompilasi):

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");

Anda harus memperbarui argumen metode secara manual untuk menggunakan objek permintaan:

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);

Minta metode batas waktu

Alat migrasi tidak mengonversi metode yang menetapkan batas waktu pada objek permintaan.

Sebelum (kode v1):

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

Setelah (hasil alat migrasi — tidak dikompilasi):

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

Anda harus melakukan migrasi secara manual untuk menggunakan overrideConfiguration metode v2:

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();

Konstruktor klien layanan dengan parameter

Alat migrasi mengonversi konstruktor klien layanan kosong tetapi tidak dapat mengonversi konstruktor yang menerima parameter seperti kredensil atau konfigurasi.

Sebelum (kode 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);

Setelah (hasil alat migrasi — tidak dikompilasi):

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);

Anda harus memperbarui konstruktor klien layanan secara manual untuk menggunakan pola pembangun:

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();