Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Nicht unterstützte Codemuster des Migrationstools
Das Migrationstool konvertiert den größten Teil des v1-Codes automatisch in den v2-Code. Einige Codemuster erfordern jedoch eine manuelle Migration. Dieses Thema enthält detaillierte Beispiele für die häufigsten nicht unterstützten Muster und zeigt Ihnen, wie Sie sie manuell konvertieren können.
Die folgende Liste von Mustern erhebt keinen Anspruch auf Vollständigkeit. Wenn Ihr Code nach der Ausführung des Migrationstools nicht kompiliert werden kann, folgen Sie den step-by-stepMigrationsanweisungen, um den verbleibenden v1-Code manuell zu migrieren.
Fordern Sie Objektkonstruktoren mit Parametern an
Auf Anfrage POJOs (außer Amazon S3) transformiert das Migrationstool nur Setter-Methoden. Das Tool unterstützt keine Konstruktoren mit Parametern.
Unterstütztes Muster: Objekt mithilfe von Setter anfordern (keine Konstruktorparameter)
Vorher (ursprünglicher v1-Code):
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");
Nachher (Ergebnis des Migrationstools):
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();
Nicht unterstütztes Muster: Objektkonstruktor mit Parametern anfordern
Das Migrationstool kann Konstruktoren mit folgenden Parametern nicht konvertieren:
Vor der manuellen Migration, aber nach dem Migrationstool:
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");
Das Migrationstool wandelt den Import in Version 2 um, der Konstruktorcode bleibt jedoch unverändert und erfordert manuelle Updates, um das Builder-Muster verwenden zu können.
Nach der manuellen Migration:
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();
Service-Client-Methoden mit individuellen Parametern
Das Migrationstool kann keine Service-Client-Methoden konvertieren, die einzelne Parameter anstelle von Anforderungsobjekten verwenden (außer Amazon S3).
Vorher (v1-Code):
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");
Nachher (Ergebnis des Migrationstools — wird nicht kompiliert):
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");
Sie müssen die Methodenargumente manuell aktualisieren, um ein Anforderungsobjekt zu verwenden:
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);
Timeout-Methoden anfordern
Das Migrationstool konvertiert keine Methoden, die Timeouts für Anforderungsobjekte festlegen.
Vorher (v1-Code):
import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest(); request.setSdkRequestTimeout(7);
Nachher (Ergebnis des Migrationstools — wird nicht kompiliert):
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. SendMessageRequest request = SendMessageRequest.builder().build(); // Does not compile. request.setSdkRequestTimeout(7);
Sie müssen manuell migrieren, um die Methode von v2 zu verwenden: 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();
Bedienen Sie Client-Konstruktoren mit Parametern
Das Migrationstool konvertiert leere Service-Client-Konstruktoren, kann jedoch keine Konstruktoren konvertieren, die Parameter wie Anmeldeinformationen oder Konfiguration akzeptieren.
Vorher (v1-Code):
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);
Nachher (Ergebnis des Migrationstools — wird nicht kompiliert):
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);
Sie müssen den Service-Client-Konstruktor manuell aktualisieren, um das Builder-Muster zu verwenden:
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();