As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Padrões de código não suportados da ferramenta de migração
A ferramenta de migração converte automaticamente a maior parte do código v1 em v2. No entanto, alguns padrões de código exigem migração manual. Este tópico fornece exemplos detalhados dos padrões não suportados mais comuns e mostra como convertê-los manualmente.
A lista de padrões a seguir não é exaustiva. Se seu código não for compilado após a execução da ferramenta de migração, siga as instruções de step-by-step migração para migrar manualmente o código v1 restante.
Solicite construtores de objetos com parâmetros
Para solicitação POJOs (excluindo o Amazon S3), a ferramenta de migração transforma somente os métodos setter. A ferramenta não oferece suporte a construtores com parâmetros.
Padrão suportado: objeto de solicitação usando setters (sem parâmetros do construtor)
Antes (código 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");
Depois (resultado da ferramenta de migração):
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();
Padrão não suportado: construtor de objeto de solicitação com parâmetros
A ferramenta de migração não pode converter construtores com parâmetros:
Antes da migração manual, mas depois da ferramenta de migração:
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");
A ferramenta de migração transforma a importação para a v2, mas o código do construtor permanece inalterado e requer atualizações manuais para usar o padrão do construtor.
Após a migração 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();
Métodos do cliente de serviço com parâmetros individuais
A ferramenta de migração não pode converter métodos de cliente de serviço que usam parâmetros individuais em vez de objetos de solicitação (excluindo o Amazon S3).
Antes (código 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");
Depois (resultado da ferramenta de migração — não compila):
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");
Você deve atualizar manualmente os argumentos do método para usar um objeto de solicitação:
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étodos de tempo limite de solicitação
A ferramenta de migração não converte métodos que definem tempos limite em objetos de solicitação.
Antes (código v1):
import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest(); request.setSdkRequestTimeout(7);
Depois (resultado da ferramenta de migração — não compila):
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. SendMessageRequest request = SendMessageRequest.builder().build(); // Does not compile. request.setSdkRequestTimeout(7);
Você deve migrar manualmente para usar o método da overrideConfiguration
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();
Construtores de clientes de serviço com parâmetros
A ferramenta de migração converte construtores de cliente de serviço vazios, mas não pode converter construtores que aceitam parâmetros como credenciais ou configuração.
Antes (código 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);
Depois (resultado da ferramenta de migração — não compila):
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);
Você deve atualizar manualmente o construtor do cliente de serviço para usar o padrão do construtor:
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();