Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Modèles de code non pris en charge par l'outil de migration
L'outil de migration convertit automatiquement la plupart du code v1 en v2. Cependant, certains modèles de code nécessitent une migration manuelle. Cette rubrique fournit des exemples détaillés des modèles non pris en charge les plus courants et explique comment les convertir manuellement.
La liste de modèles suivante n'est pas exhaustive. Si votre code n'est pas compilé après avoir exécuté l'outil de migration, suivez les instructions de step-by-step migration pour migrer manuellement le code v1 restant.
Demander des constructeurs d'objets avec des paramètres
Pour les demandes POJOs (à l'exception d'Amazon S3), l'outil de migration transforme uniquement les méthodes setter. L'outil ne prend pas en charge les constructeurs paramétrés.
Modèle pris en charge : objet de requête à l'aide de setters (aucun paramètre de constructeur)
Avant (code v1 original) :
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");
Après (résultat de l'outil de migration) :
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();
Modèle non pris en charge : constructeur d'objet de demande avec paramètres
L'outil de migration ne peut pas convertir les constructeurs avec des paramètres :
Avant la migration manuelle, mais après l'outil de migration :
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");
L'outil de migration transforme l'importation en version v2, mais le code du constructeur reste inchangé et nécessite des mises à jour manuelles pour utiliser le modèle du générateur.
Après la migration manuelle :
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();
Méthodes du client de service avec paramètres individuels
L'outil de migration ne peut pas convertir les méthodes des clients de service qui utilisent des paramètres individuels au lieu d'objets de demande (à l'exception d'Amazon S3).
Avant (code 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");
Après (résultat de l'outil de migration : ne compile pas) :
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");
Vous devez mettre à jour manuellement les arguments de méthode pour utiliser un objet de requête :
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);
Méthodes de temporisation des demandes
L'outil de migration ne convertit pas les méthodes qui définissent des délais d'expiration pour les objets de demande.
Avant (code v1) :
import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest(); request.setSdkRequestTimeout(7);
Après (résultat de l'outil de migration : ne compile pas) :
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. SendMessageRequest request = SendMessageRequest.builder().build(); // Does not compile. request.setSdkRequestTimeout(7);
Vous devez migrer manuellement pour utiliser la overrideConfiguration
méthode de la 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();
Constructeurs de clients de service avec paramètres
L'outil de migration convertit les constructeurs de clients de service vides, mais ne peut pas convertir les constructeurs qui acceptent des paramètres tels que les informations d'identification ou la configuration.
Avant (code 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);
Après (résultat de l'outil de migration : ne compile pas) :
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);
Vous devez mettre à jour manuellement le constructeur du client de service pour utiliser le modèle de générateur :
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();