

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á.

# step-by-stepInstruções de migração com exemplo
<a name="migration-steps"></a>

Esta seção fornece um step-by-step guia para migrar seu aplicativo que atualmente usa o SDK for Java v1.x para o SDK for Java 2.x. A primeira parte apresenta uma visão geral das etapas seguidas por um exemplo detalhado de uma migração.

As etapas abordadas aqui descrevem a migração de um caso de uso normal, em que o aplicativo chama Serviços da AWS usando clientes de serviço orientados por modelos. Se você precisar migrar código que usa um nível superior APIs , como o [S3 Transfer Manager](migration-s3-transfer-manager.md) ou a [CloudFrontpré-assinatura](migration-cloudfront-presigning.md), consulte a seção abaixo do [O que há de diferente entre AWS SDK para Java 1.x e 2.x](migration-whats-different.md) índice.



A abordagem descrita aqui é uma sugestão. Você pode usar outras técnicas e aproveitar os recursos de edição de código do IDE para alcançar o mesmo resultado. 

## Visão geral das etapas
<a name="migration-steps-overview"></a>

### 1. Comece adicionando o BOM do SDK para Java 2.x
<a name="migration-steps-overview-step1"></a>

Ao adicionar o elemento BOM (Lista de materiais) do Maven para o SDK para Java 2.x ao arquivo POM, você garante que todas as dependências necessárias da v2 sejam da mesma versão. O POM pode conter dependências da v1 e da v2. Isso permite migrar o código de forma incremental em vez de alterá-lo de uma só vez.

#### BOM do SDK para Java 2.x
<a name="drt_b5n_q1c"></a>

```
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>bom</artifactId>
      <version>2.27.21</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
```

É possível encontrar a [versão mais recente](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) no repositório do Maven Central.

### 2. Pesquisar arquivos para declarações de importação de classe da v1
<a name="migration-steps-overview-step2"></a>

Ao escanear os arquivos em seu aplicativo em busca de SERVICE\$1 IDs usado nas importações v1, você encontrará o SERVICE\$1 exclusivo usado. IDs Um SERVICE\$1ID é um nome curto e exclusivo para um. AWS service (Serviço da AWS) Por exemplo, `cognitoidentity` é o SERVICE\$1ID do Amazon Cognito Identity.

### 3. Determine as dependências da v2 do Maven com base nas declarações de importação da v1
<a name="migration-steps-overview-step3"></a>

Depois de encontrar todos os exclusivos v1 SERVICE\$1IDs, você pode determinar o artefato Maven correspondente para a dependência v2 consultando a. [Nome do pacote para mapeamentos de artifactId do Maven.](#migration-serviceid-artifactid-mapping)

### 4. Adicionar elementos de dependência da v2 ao arquivo POM
<a name="migration-steps-overview-step4"></a>

Atualize o arquivo POM do Maven com os elementos de dependência determinados na etapa 3.

### 5. Nos arquivos Java, altere incrementalmente as classes da v1 para as classes da v2
<a name="migration-steps-overview-step5"></a>

Ao substituir as classes da v1 por classes da v2, faça as alterações necessárias para dar suporte à API da v2, como usar compiladores em vez de construtores e usar getters e setters fluentes.

### 6. Remova as dependências da v1 do Maven das importações do POM e da v1 dos arquivos
<a name="migration-steps-overview-step6"></a>

Depois de migrar o código para usar classes da v2, remova todas as importações da v1 restantes dos arquivos e todas as dependências do arquivo de compilação.

### 7. Refatorar o código para usar os aprimoramentos da API da v2
<a name="migration-steps-overview-step7"></a>

Depois que o código for compilado e aprovado nos testes, você poderá aproveitar os aprimoramentos da v2, como usar um cliente HTTP diferente ou paginadores para simplificar o código. Esta é uma etapa opcional.

## Exemplo de migração
<a name="migration-steps-example"></a>

Neste exemplo, migramos uma aplicação que usa o SDK para Java v1 e acessa vários Serviços da AWS. Trabalhamos detalhadamente com o seguinte método da v1 na etapa 5. Esse é um método em uma classe que contém oito métodos e há 32 classes na aplicação.

### método da v1 para migrar
<a name="v1-snippet-collapsed"></a>

Somente as importações do SDK da v1 estão listadas abaixo no arquivo Java.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;
...
private static List<Instance> getRunningInstances(AmazonEC2Client ec2, List<String> instanceIds) {
    List<Instance> runningInstances = new ArrayList<>();
    try {
        DescribeInstancesRequest request = new DescribeInstancesRequest()
                .withInstanceIds(instanceIds);
        DescribeInstancesResult result;
        do {
            // DescribeInstancesResponse is a paginated response, so use tokens with multiple requests.
            result = ec2.describeInstances(request);
            request.setNextToken(result.getNextToken());   // Prepare request for next page.
            for (final Reservation r : result.getReservations()) {
                for (final Instance instance : r.getInstances()) {
                    LOGGER.info("Examining instanceId: "+ instance.getInstanceId());
                    // if instance is in a running state, add it to runningInstances list.
                    if (RUNNING_STATES.contains(instance.getState().getName())) {
                        runningInstances.add(instance);
                    }
                }
            }
        } while (result.getNextToken() != null);
    } catch (final AmazonEC2Exception exception) {
        // if instance isn't found, assume its terminated and continue.
        if (exception.getErrorCode().equals(NOT_FOUND_ERROR_CODE)) {
            LOGGER.info("Instance probably terminated; moving on.");
        } else {
            throw exception;
        }
    }
    return runningInstances;
}
```

### 1. Adicionar BOM da v2 do Maven
<a name="migration-steps-example-step1"></a>

Adicione o BOM do Maven para o SDK para Java 2.x ao POM junto com quaisquer outras dependências na seção `dependencyManagement`. Se o arquivo POM tiver o BOM da v1 do SDK, deixe-o por enquanto. Ele será removido em uma etapa posterior.

#### Gerenciamento de dependências do POM no início
<a name="migration-example-boms"></a>

```
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.example</groupId>             <!--Existing dependency in POM. -->
      <artifactId>bom</artifactId>
      <version>1.3.4</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-bom</artifactId>  <!--Existing v1 BOM dependency. -->
      <version>1.11.1000</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
    <dependency>
      <groupId>software.amazon.awssdk</groupId>  <!--Add v2 BOM dependency. -->
      <artifactId>bom</artifactId>
      <version>2.27.21</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
```

### 2. Pesquisar arquivos para declarações de importação de classe da v1
<a name="migration-steps-example-step2"></a>

Pesquise o código da aplicação em busca de ocorrências exclusivas de `import com.amazonaws.services`. Isso nos ajuda a determinar as dependências da v1 usadas pelo projeto. Se a aplicação tiver um arquivo POM do Maven com dependências da v1 listadas, você poderá usar essas informações em vez disso. 

Neste exemplo, usamos o comando [`ripgrep` (rg)](https://github.com/BurntSushi/ripgrep) para pesquisar a base de código.

Da raiz da base de código, execute o comando `ripgrep` a seguir. Depois de `ripgrep` encontrar as instruções de importação, elas são canalizadas para os `uniq` comandos `cut``sort`, e para isolar o SERVICE\$1. IDs 

```
rg --no-filename 'import\s+com\.amazonaws\.services' | cut -d '.' -f 4 | sort | uniq
```

Para esse aplicativo, os seguintes SERVICE\$1 IDs são registrados no console.

```
autoscaling
cloudformation
ec2
identitymanagement
```

Isso indica que houve pelo menos uma ocorrência de cada um dos seguintes nomes de pacotes usados nas declarações `import`. Para nossos propósitos, os nomes das classes individuais não importam. Só precisamos encontrar os SERVICE\$1 IDs que são usados.

```
com.amazonaws.services.autoscaling.*
com.amazonaws.services.cloudformation.*
com.amazonaws.services.ec2.*
com.amazonaws.services.identitymanagement.*
```

### 3. Determine as dependências da v2 do Maven com base nas declarações de importação da v1
<a name="migration-steps-example-step3"></a>

O SERVICE\$1 IDs para v1 que isolamos da Etapa 2 — por exemplo, `autoscaling` e `cloudformation` — pode ser mapeado para o mesmo SERVICE\$1ID v2 na maior parte. Como o artifactId da v2 do Maven corresponde ao SERVICE\$1ID na maioria dos casos, você tem as informações necessárias para adicionar blocos de dependência ao arquivo POM.

A tabela a seguir mostra como podemos determinar as dependências da v2.


| SERVICE\$1ID da v1 mapeia para...nome do pacote | SERVICE\$1ID da v2 mapeia para...nome do pacote | Dependência da v2 do Maven | 
| --- | --- | --- | 
|  **ec2** `com.amazonaws.services.ec2.*`  |  **ec2** `software.amazon.awssdk.services.ec2.*`  |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>ec2</artifactId><br /></dependency></pre>  | 
|  **escalonamento automático** `com.amazonaws.services.autoscaling.*`  |  **escalonamento automático** `software.amazon.awssdk.services.autoscaling.*`  |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>autoscaling</artifactId><br /></dependency></pre>  | 
| cloudformation`com.amazonaws.services.cloudformation.*` | cloudformation`software.amazon.awssdk.cloudformation.*` |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>cloudformation</artifactId><br /></dependency></pre>  | 
| identitymanagement\$1`com.amazonaws.services.identitymanagement.*` | eu sou\$1`software.amazon.awssdk.iam.*` |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>iam</artifactId><br /></dependency></pre>  | 

\$1 O mapeamento de `identitymanagement` para `iam` é uma exceção em que o SERVICE\$1ID difere entre as versões. Consulte as exceções em [Nome do pacote para mapeamentos de artifactId do Maven.](#migration-serviceid-artifactid-mapping), caso o Maven ou o Gradle não consigam resolver a dependência da v2.

### 4. Adicionar elementos de dependência da v2 ao arquivo POM
<a name="migration-steps-example-step4"></a>

Na etapa 3, determinamos os quatro blocos de dependência que precisam ser adicionados ao arquivo POM. Não precisamos adicionar uma versão porque especificamos o BOM na etapa 1. Depois que as importações são adicionadas, nosso arquivo POM tem os seguintes elementos de dependência.

```
    ...
  <dependencies>
    ...
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>autoscaling</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>iam</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>cloudformation</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>ec2</artifactId>
    </dependency>
    ...
  </dependencies>
    ...
```

### 5. Nos arquivos Java, altere incrementalmente as classes da v1 para as classes da v2
<a name="migration-steps-example-step5"></a>

No método que estamos migrando, vemos
+ Um cliente de serviço do EC2 de `com.amazonaws.services.ec2.AmazonEC2Client`.
+ Várias classes de modelo do EC2 usadas. Por exemplo, `DescribeInstancesRequest` e `DescribeInstancesResult`.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;
...
private static List<Instance> getRunningInstances(AmazonEC2Client ec2, List<String> instanceIds)
    List<Instance> runningInstances = new ArrayList<>();
    try {
        DescribeInstancesRequest request = new DescribeInstancesRequest()
                .withInstanceIds(instanceIds);
        DescribeInstancesResult result;
        do {
            // DescribeInstancesResponse is a paginated response, so use tokens with multiple re
            result = ec2.describeInstances(request);
            request.setNextToken(result.getNextToken());   // Prepare request for next page.
            for (final Reservation r : result.getReservations()) {
                for (final Instance instance : r.getInstances()) {
                    LOGGER.info("Examining instanceId: "+ instance.getInstanceId());
                    // if instance is in a running state, add it to runningInstances list.
                    if (RUNNING_STATES.contains(instance.getState().getName())) {
                        runningInstances.add(instance);
                    }
                }
            }
        } while (result.getNextToken() != null);
    } catch (final AmazonEC2Exception exception) {
        // if instance isn't found, assume its terminated and continue.
        if (exception.getErrorCode().equals(NOT_FOUND_ERROR_CODE)) {
            LOGGER.info("Instance probably terminated; moving on.");
        } else {
            throw exception;
        }
    }
    return runningInstances;
}
...
```

Nosso objetivo é substituir todas as importações da v1 por importações da v2. Prosseguimos com uma classe por vez.

#### a. Substitua a declaração de importação ou o nome da classe
<a name="migration-example-step5-substep1"></a>

Vemos que o primeiro parâmetro do método `describeRunningInstances` uma instância `AmazonEC2Client` da v1. Execute um destes procedimentos:
+ Substitua a importação por `com.amazonaws.services.ec2.AmazonEC2Client` com `software.amazon.awssdk.services.ec2.Ec2Client` e altere `AmazonEC2Client` para `Ec2Client`.
+ Altere o tipo de parâmetro para `Ec2Client` e deixe que o IDE solicite a importação correta. Nosso IDE solicitará a importação da classe da v2 porque os nomes dos clientes são diferente: `AmazonEC2Client` e `Ec2Client`. Essa abordagem não funcionará se o nome da classe for o mesmo nas duas versões.

#### b. Substitua as classes do modelo da v1 por equivalentes da v2
<a name="migration-example-step5-substep2"></a>

Após a mudança para o `Ec2Client` da v2, se usarmos um IDE, veremos erros de compilação na declaração a seguir.

```
                    result = ec2.describeInstances(request);
```

O erro de compilação resulta do uso de uma instância de `DescribeInstancesRequest` da v1 como parâmetro para o método `Ec2Client` `describeInstances` da v2. Para corrigir, faça as seguintes declarações de substituição ou importação.


| subtituir | por | 
| --- | --- | 
|  <pre>import com.amazonaws.services.ec2.model.DescribeInstancesRequest</pre>  |  <pre>import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest</pre>  | 

#### c. Altere os compiladores da v1 para compiladores da v2.
<a name="migration-example-step5-substep3"></a>

Ainda vemos erros de compilação porque [não há construtores nas classes da v2](migration-whats-different.md#immutable-classes). Para corrigir isso, faça a alteração a seguir.


| alteração | para | 
| --- | --- | 
|  <pre>final DescribeInstancesRequest request = new DescribeInstancesRequest()<br />        .withInstanceIds(instanceIdsCopy);</pre>  |  <pre>final DescribeInstancesRequest request = DescribeInstancesRequest.builder()<br />        .instanceIds(instanceIdsCopy)<br />        .build();</pre>  | 

#### d. Substitua objetos de resposta `*Result` da v1 por `*Response` equivalentes da v2
<a name="migration-example-step5-substep4"></a>

Uma diferença consistente entre a v1 e a v2 é que todos os [objetos de resposta na v2 terminam com `*Response` em vez de `*Result`](migration-whats-different.md#model-classname-changes). Substitua a importação `DescribeInstancesResult` da v1 pela importação `DescribeInstancesResponse` da v2.

#### d. Fazer alterações na API
<a name="migration-example-step5-substep5"></a>

A declaração a seguir precisa de algumas alterações.

```
request.setNextToken(result.getNextToken());
```

Na v2, os [métodos de setter](migration-whats-different.md#setter-getter-methods) não usam o `set` nem com `prefix`. Métodos getter com prefixo `get` também foram incluídos no SDK para Java 2.x

Classes de modelo, como a instância `request`, são imutáveis na v2, então precisamos criar uma `DescribeInstancesRequest` com um compilador.

Na v2, a declaração se torna a seguinte.

```
request = DescribeInstancesRequest.builder()
        .nextToken(result.nextToken())
        .build();
```

#### d. Repita até que o método seja compilado com classes da v2
<a name="migration-example-step5-substep6"></a>

Continue com o restante do código. Substitua as importações da v1 pelas importações da v2 e corrija os erros de compilação. Consulte a [Referência da API da v2](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ec2/package-summary.html) e a [Referência O que mudou](migration-whats-different.md), conforme necessário.

Depois de migrarmos esse único método, temos o seguinte código da v2.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;

import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse;
import software.amazon.awssdk.services.ec2.model.Ec2Exception;
import software.amazon.awssdk.services.ec2.model.Instance;
import software.amazon.awssdk.services.ec2.model.Reservation;
...
private static List<Instance> getRunningInstances(Ec2Client ec2, List<String> instanceIds) {
    List<Instance> runningInstances = new ArrayList<>();
        try {
            DescribeInstancesRequest request = DescribeInstancesRequest.builder()
                    .instanceIds(instanceIds)
                    .build();
            DescribeInstancesResponse result;
            do {
                // DescribeInstancesResponse is a paginated response, so use tokens with multiple re
                result = ec2.describeInstances(request);
                request = DescribeInstancesRequest.builder()   // Prepare request for next page.
                        .nextToken(result.nextToken())
                        .build();
                for (final Reservation r : result.reservations()) {
                    for (final Instance instance : r.instances()) {
                        // if instance is in a running state, add it to runningInstances list.
                        if (RUNNING_STATES.contains(instance.state().nameAsString())) {
                            runningInstances.add(instance);
                        }
                    }
                }
            } while (result.nextToken() != null);
        } catch (final Ec2Exception exception) {
            // if instance isn't found, assume its terminated and continue.
            if (exception.awsErrorDetails().errorCode().equals(NOT_FOUND_ERROR_CODE)) {
                    LOGGER.info("Instance probably terminated; moving on.");
            } else {
                throw exception;
            }
        }
        return runningInstances;
    }
...
```

Como estamos migrando um único método em um arquivo Java com oito métodos, temos uma combinação de importações da v1 e da v2 à medida que trabalhamos no arquivo. Adicionamos as últimas seis declarações de importação à medida que executamos as etapas. 

Depois de migrarmos todo o código, não haverá mais declarações de importação v1.

### 6. Remova as dependências da v1 do Maven das importações do POM e da v1 dos arquivos
<a name="migration-steps-example-step6"></a>

Depois de migrarmos todo o código da v1 no arquivo, temos as seguintes declarações de importação do SDK da v2.

```
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.regions.ServiceMetadata;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.CreateTagsRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse;
import software.amazon.awssdk.services.ec2.model.Ec2Exception;
import software.amazon.awssdk.services.ec2.model.Instance;
import software.amazon.awssdk.services.ec2.model.InstanceStateName;
import software.amazon.awssdk.services.ec2.model.Reservation;
import software.amazon.awssdk.services.ec2.model.Tag;
import software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest;
```

Depois de migrarmos *todos* os arquivos na aplicação, não precisaremos mais das dependências da v1 no arquivo POM. Remova o BOM v1 da seção `dependencyManagement`, caso esteja usando, e todos os blocos de dependência da v1.

### 7. Refatorar o código para usar os aprimoramentos da API da v2
<a name="migration-steps-example-step7"></a>

Para o trecho que estamos migrando, podemos usar um paginador da v2 e deixar o SDK gerenciar as solicitações baseadas em tokens para obter mais dados, caso desejarmos.

Podemos substituir toda a cláusula `do` pela seguinte.

```
                DescribeInstancesIterable responses = ec2.describeInstancesPaginator(request);

                responses.reservations().stream()
                        .forEach(reservation -> reservation.instances()
                                .forEach(instance -> {
                                    if (RUNNING_STATES.contains(instance.state().nameAsString())) {
                                        runningInstances.put(instance.instanceId(), instance);
                                    }
                                }));
```

## Nome do pacote para mapeamentos de artifactId do Maven.
<a name="migration-serviceid-artifactid-mapping"></a>

Ao migrar o projeto Maven ou Gradle da v1 do SDK para Java para a v2, você precisa descobrir quais dependências adicionar ao arquivo de compilação. A abordagem descrita em [step-by-stepInstruções de migração com exemplo](#migration-steps) (etapa 3) usa os nomes dos pacotes nas declarações de importação como ponto de partida para determinar as dependências (como artifactIds) que devem ser adicionadas ao arquivo de compilação. 

Você pode usar as informações deste tópico para mapear os nomes dos pacotes da v1 para os artifactIds da v2.

### Convenção de nomenclatura comum usada em nomes de pacotes e artifactIds do Maven
<a name="migration-naming-convention"></a>

A tabela a seguir mostra a convenção de nomenclatura comum SDKs usada para um determinado SERVICE\$1ID. Um SERVICE\$1ID é um identificador exclusivo para um. AWS service (Serviço da AWS) Por exemplo, o SERVICE\$1ID do serviço Amazon S3 é `s3` e o SERVICE\$1ID do Amazon Cognito Identity é `cognitoidentity`.


| Nome do pacote da v1 (declaração de importação) | artifactId da v1 | artifactId da v2 | Nome do pacote da v2 (declaração de importação) | 
| --- | --- | --- | --- | 
| com.amazonaws.services.SERVICE\$1ID | aws-java-sdk-ID DO SERVIÇO | SERVICE\$1ID | software.amazon.awssdk.services.SERVICE\$1ID | 
|   | 
| Exemplo do Amazon Cognito Identity (SERVICE\$1ID: cognitoidentity) | 
| com.amazonaws.services.cognitoidentity | aws-java-sdk- identidade cognitiva | cognitoidentity | software.amazon.awssdk.services.cognitoidentity | 

### Diferenças de SERVICE\$1ID
<a name="migration-serviceid-diffs"></a>

#### Na v1
<a name="migration-serviceid-diffs-withinv1"></a>

Em alguns casos, o SERVICE\$1ID difere entre o nome do pacote e o artifactId do mesmo serviço. Por exemplo, a linha CloudWatch Métricas da tabela a seguir mostra que `metrics` é o SERVICE\$1ID no nome do pacote, mas `cloudwatchmetrics` é o SERVICE\$1ID do ArtifactID.

#### Na v2
<a name="migration-serviceid-diffs-withinv2"></a>

Não há diferenças no SERVICE\$1ID usado em nomes de pacotes e artifactIds.

#### Entre a v1 e a v2
<a name="migration-serviceid-diffs-btwv1v2"></a>

Para a maioria dos serviços, o SERVICE\$1ID na v2 é o mesmo que o SERVICE\$1ID na v1 nos nomes dos pacotes e nos artifactIds. Um exemplo disso é o SERVICE\$1ID `cognitoedentity`, conforme mostrado na tabela anterior. No entanto, alguns SERVICE\$1 IDs diferem entre os, SDKs conforme mostrado na tabela a seguir.

Um **SERVICE\$1ID em negrito** em qualquer uma das colunas da v1 indica que ele é diferente do SERVICE\$1ID usado na v2.


| Nome do serviço | Nome do pacote da v1 | artifactId da v1 | artifactId da v2 | Nome do pacote da v2 | 
| --- | --- | --- | --- | --- | 
|  |  Todos os nomes de pacotes começam com `com.amazonaws.services`, conforme mostrado na primeira linha.  |  Todos os artifactIds são colocados entre tags, conforme mostrado na primeira linha.  |  Todos os artifactIds são colocados entre tags, conforme mostrado na primeira linha.  |  Todos os nomes de pacotes começam com `software.amazon.awssdk`, conforme mostrado na primeira linha.  | 
|  | 
| API Gateway | com.amazonaws.services.apigateway | <artifactId>aws-java-sdk- gateway de API</artifactId> | <artifactId>apigateway</artifactId> | software.amazon.awssdk.services.apigateway | 
| Registro de aplicação | appregistry | appregistry | servicecatalogappregistry | servicecatalogappregistry | 
| Application Discovery | applicationdiscovery | discovery | applicationdiscovery | applicationdiscovery | 
| Runtime do Augmented AI | augmentedairuntime | augmentedairuntime | sagemakera2iruntime | sagemakera2iruntime | 
| Certificate Manager | certificatemanager | acm | acm | acm | 
| CloudControl API | cloudcontrolapi | cloudcontrolapi | cloudcontrol | cloudcontrol | 
| CloudSearch | cloudsearchv2 | cloudsearch | cloudsearch | cloudsearch | 
| CloudSearch Domínio | cloudsearchdomain | pesquisa na nuvem | cloudsearchdomain | cloudsearchdomain | 
| CloudWatch Eventos | cloudwatchevents | eventos | cloudwatchevents | cloudwatchevents | 
| CloudWatch Evidentemente | cloudwatchevidently | cloudwatchevidently | evidently | evidently | 
| CloudWatch Registros | logs | logs | cloudwatchlogs | cloudwatchlogs | 
| CloudWatch Métricas | métricas | cloudwatchmetrics | cloudwatch | cloudwatch | 
| CloudWatch Rum | cloudwatchrum | cloudwatchrum | rum | rum | 
| Provedor de identidades do Cognito | cognitoidp | cognitoidp | cognitoidentityprovider | cognitoidentityprovider | 
| Campanhas do Connect | connectcampaign | connectcampaign | connectcampaigns | connectcampaigns | 
| Connect Wisdom | connectwisdom | connectwisdom | wisdom | wisdom | 
| Database Migration Service | databasemigrationservice | dms | databasemigration | databasemigration | 
| DataZone | datazone | datazoneexternal | datazone | datazone | 
| DynamoDB | dynamodbv2 | dynamodb | dynamodb | dynamodb | 
| Elastic File System | sistema de arquivos elástico | efs | efs | efs | 
| Elastic Map Reduce | elasticmapreduce | emr | emr | emr | 
| Glue DataBrew | gluedatabrew | gluedatabrew | databrew | databrew | 
| IAM Roles Anywhere | iamrolesanywhere | iamrolesanywhere | rolesanywhere | rolesanywhere | 
| Gerenciamento de identidades | identitymanagement | iam | iam | iam | 
| Dados de IoT | iotdata | iot | iotdataplane | iotdataplane | 
| Kinesis Analytics | kinesisanalytics | kinesis | kinesisanalytics | kinesisanalytics | 
| Kinesis Firehose | kinesisfirehose | kinesis | firehose | firehose | 
| Canais de sinalização do Kinesis Video | kinesisvideosignalingchannels | kinesisvideosignalingchannels | kinesisvideosignaling | kinesisvideosignaling | 
| Lex | lexruntime | lex | lexruntime | lexruntime | 
| Lookout for Vision | lookoutforvision | lookoutforvision | lookoutvision | lookoutvision | 
| Mainframe Modernization | mainframemodernization | mainframemodernization | m2 | m2 | 
| Marketplace Metering | marketplacemetering | marketplacemeteringservice | marketplacemetering | marketplacemetering | 
| Managed Grafana | managedgrafana | managedgrafana | grafana | grafana | 
| Mechanical Turk | mturk | mechanicalturkrequester | mturk | mturk | 
| Migration Hub Strategy Recommendations | migrationhubstrategyrecommendations | migrationhubstrategyrecommendations | migrationhubstrategy | migrationhubstrategy | 
| Nimble Studio | nimblestudio | nimblestudio | nimble | nimble | 
| 5G Privado | private5g | private5g | privatenetworks | privatenetworks | 
| Prometheus | prometheus | prometheus | amp | amp | 
| Lixeira | recyclebin | recyclebin | rbin | rbin | 
| API de dados Redshift | redshiftdataapi | redshiftdataapi | redshiftdata | redshiftdata | 
| Route 53 | route53domains | route53 | route53domains | route53domains | 
| SageMaker Edge Manager | sagemakeredgemanager | sagemakeredgemanager | sagemakeredge | sagemakeredge | 
| Security Token | securitytoken | sts | sts | sts | 
| Server Migration | servermigration | servermigration | sms | sms | 
| Simple Email | simpleemail | ses | ses | ses | 
| Simple Email V2 | simpleemailv2 | sesv2 | sesv2 | sesv2 | 
| Simple Systems Manager | simplesystemsmanagement | ssm | ssm | ssm | 
| Simple Workflow | simpleworkflow | simpleworkflow | swf | swf | 
| Step Functions | stepfunctions | stepfunctions | sfn | sfn | 