

# Importar recursos da AWS para uma pilha do CloudFormation
<a name="import-resources"></a>

Você pode importar recursos existentes para uma pilha do CloudFormation. Isso é útil se você quiser começar a usar o CloudFormation para gerenciar atributos que foram criados fora do CloudFormation sem precisar excluí-los e recriá-los.

O CloudFormation oferece as seguintes opções para importar recursos existentes em uma pilha:
+ O [gerador de IaC](generate-IaC.md) é uma ferramenta que verifica automaticamente seus recursos existentes e gera um modelo do CloudFormation com base em seu estado atual. Esse modelo pode então ser usado para importar esses recursos em uma pilha.
+ A [importação de recursos](import-resources-manually.md) é um \$1processo manual em que você descreve os recursos existentes em seu modelo do CloudFormation e depois os importa para uma pilha. Essa abordagem exige que você especifique manualmente as propriedades e configurações do recurso no modelo.
+ A [importação automática](import-resources-automatically.md) é um processo automático que descreve os recursos existentes no modelo do CloudFormation e no qual o CloudFormation importa os recursos com nomes personalizados correspondentes para uma pilha.
+ A [refatoração de pilhas](stack-refactoring.md) é um recurso que simplifica a reorganização dos recursos em suas pilhas do CloudFormation e, ao mesmo tempo, preserva as propriedades e os dados dos recursos existentes. Com a refatoração de pilhas, é possível mover recursos entre pilhas, dividir pilhas monolíticas em componentes menores ou consolidar várias pilhas em uma.

Além de colocar os recursos existentes sob o gerenciamento do CloudFormation, o recurso de importação de recursos pode ser útil nos seguintes cenários:
+ **Movendo recursos entre pilhas**: você pode importar recursos de uma pilha para outra, permitindo que você reorganize sua infraestrutura conforme necessário.
+ **Aninhamento de pilhas existentes**: você pode importar uma pilha existente como uma pilha aninhada dentro de outra pilha, permitindo projetos de infraestrutura modulares e reutilizáveis.

O CloudFormation é compatível com a importação de uma ampla gama de recursos. Para obter mais informações, consulte [Suporte a tipos de recursos](resource-import-supported-resources.md).

**Topics**
+ [Importar recursos da AWS manualmente](import-resources-manually.md)
+ [Importar recursos da AWS automaticamente](import-resources-automatically.md)
+ [Reverter uma operação de importação](resource-import-revert.md)

# Importar recursos da AWS para uma pilha do CloudFormation manualmente
<a name="import-resources-manually"></a>

Com a importação de recursos, você pode importar recursos existentes da AWS para uma pilha nova ou existente do CloudFormation. Durante uma operação de importação, você cria um conjunto de alterações importando recursos existentes para uma pilha ou cria uma pilha com os recursos existentes. Você fornece o seguinte durante a importação.
+ Um modelo que descreve toda a pilha, incluindo os recursos de pilha originais e os recursos que estão sendo importados. Todos os recursos que serão importados deverão ter um [atributo DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html).
+ Identificadores para os recursos que você está importando, que o CloudFormation pode usar para realizar o mapeamento dos IDs lógicos no modelo com os recursos existentes.

**nota**  
O CloudFormation é compatível somente com um nível de aninhamento usando a importação de recursos. Isso significa que você não pode importar uma pilha em uma pilha filho ou importar uma pilha com filhos.

**Topics**
+ [Identificadores de recursos](#resource-import-identifiers-unique-ids)
+ [Validação](#resource-import-validation)
+ [Códigos de status](#resource-import-status-codes)
+ [Considerações](#resource-import-considerations)
+ [Recursos adicionais](#resource-import-additional-resources)
+ [Criar uma pilha com recursos existentes](resource-import-new-stack.md)
+ [Importar recursos existentes para uma pilha](resource-import-existing-stack.md)
+ [Mover recursos entre pilhas](refactor-stacks.md)
+ [Aninhar uma pilha existente](resource-import-nested-stacks.md)

## Identificadores de recursos
<a name="resource-import-identifiers-unique-ids"></a>

Você fornece dois valores para identificar cada recurso que está sendo importado.
+ Uma propriedade identificadora. Esta é uma propriedade de recursos que pode ser usada para identificar cada tipo de recurso. Por exemplo, um recurso `AWS::S3::Bucket` pode ser identificado usando o `BucketName`.

  A propriedade do recurso usada para identificar o recurso que está sendo importado varia de acordo com o tipo de recurso. É possível encontrar a propriedade do recurso no console do CloudFormation. Depois de criar um modelo que inclua o recurso a ser importado, você poderá iniciar o processo de importação, no qual encontrará as propriedades do identificador para os recursos que estão sendo importados. Para alguns tipos de recursos, pode existir diversas maneiras de identificá-los, e você pode selecionar qual propriedade deseja usar nas listas suspensas.

  Como alternativa, é possível obter as propriedades do identificador para os recursos que estão sendo importados ao chamar o comando [get-template-summary](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/get-template-summary.html) da CLI e ao selecionar o URL do S3 do modelo de pilha como o valor da opção `--template-url`.
+ Um valor do identificador. Esse é o valor real da propriedade do recurso. Por exemplo, o valor real da propriedade `BucketName` deve ser `MyS3Bucket`.

  É possível obter o valor da propriedade do identificador usando o console de serviço do recurso.

## Validação da importação de recursos
<a name="resource-import-validation"></a>

Durante uma operação de importação, o CloudFormation realiza as seguintes validações.
+ O recurso a ser importado já existe.
+ As propriedades e os valores de configuração de cada recurso a ser importado aderem ao esquema do tipo do recurso, que define as propriedades aceitas, as propriedades obrigatórias e os valores de propriedades compatíveis.
+ As propriedades obrigatórias são especificadas no modelo. As propriedades obrigatórias de cada tipo de recurso estão listadas na [Referência de tipos de propriedades e recursos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html).
+ O recurso a ser importado não pertence a outra pilha na mesma região.

O CloudFormation não verifica se a configuração do modelo corresponde à configuração real das propriedades de recursos.

**Importante**  
Verifique se os recursos e suas propriedades definidas no modelo correspondem à configuração pretendida da importação de recursos para evitar alterações inesperadas.

## Códigos de status de importação de recursos
<a name="resource-import-status-codes"></a>

Essa tabela descreve os vários tipos de status usados com o recurso de importação de recursos.


| Status da operação de importação | Descrição | 
| --- | --- | 
|  `IMPORT_IN_PROGRESS`  |  A operação de importação está em andamento.  | 
|  `IMPORT_COMPLETE`  |  A operação de importação foi concluída para todos os recursos da pilha.  | 
|  `IMPORT_ROLLBACK_IN_PROGRESS`  |  A operação de reversão da importação está sendo revertida para a configuração de modelo anterior.  | 
|  `IMPORT_ROLLBACK_FAILED`  |  Falha na operação de reversão da importação.  | 
|  `IMPORT_ROLLBACK_COMPLETE`  |  A importação foi revertida para a configuração de modelo anterior.  | 

## Considerações durante uma operação de importação
<a name="resource-import-considerations"></a>
+ Após a importação ter sido concluída, e antes de realizar as operações de pilhas subsequentes, recomendamos executar a detecção de desvios nos recursos importados. A detecção de desvios garante que a configuração do modelo corresponda à configuração real. Para obter mais informações, consulte [Detectar desvio em uma pilha inteira do CloudFormation](detect-drift-stack.md).
+ As operações de importação não permitem criações de novos recursos, exclusões de recursos ou alterações para configurações de propriedade.
+ Cada recurso a ser importado deve ter um atributo `DeletionPolicy` para que a operação de importação tenha êxito. O `DeletionPolicy` pode ser definido como qualquer valor possível. Somente os recursos que você está importando precisam de uma `DeletionPolicy`. Os recursos que já fazem parte da pilha não precisam de `DeletionPolicy`.
+ Não é possível importar o mesmo recurso em várias pilhas.
+ Você pode usar a condição da política `cloudformation:ImportResourceTypes` do IAM para controlar com quais tipos de recursos os usuários podem trabalhar durante uma operação de importação. Para obter mais informações, consulte [Chaves de condição de política do CloudFormation](control-access-with-iam.md#using-iam-conditions).
+ Os limites de pilha do CloudFormation se aplicam à importação de recursos. Para obter mais informações sobre limites, consulte [Entender as cotas do CloudFormation](cloudformation-limits.md).

## Recursos adicionais
<a name="resource-import-additional-resources"></a>

Para resolver o desvio de pilha com uma importação de recursos, consulte [Resolver o desvio com uma operação de importação](resource-import-resolve-drift.md).

# Criar uma pilha com recursos existentes
<a name="resource-import-new-stack"></a>

Este tópico mostra como criar uma pilha a partir dos recursos da AWS existentes descrevendo-os em um modelo. Para, em vez disso, verificar os recursos existentes e gerar automaticamente um modelo que você possa usar para importar recursos existentes para o CloudFormation ou replicar os recursos em uma nova conta, consulte [Gerar modelos a partir de recursos existentes com o gerador de IaC](generate-IaC.md).

**Pré-requisitos**

Antes de começar, você deve ter o seguinte:
+ Um modelo que descreve todos os recursos que você deseja em uma nova pilha. Salve o modelo do localmente ou em um bucket do Amazon S3. 
+ Para cada recurso que você desejar importar, inclua o seguinte:
  + as propriedades e os valores das propriedades que definem a configuração atual do recurso.
  + o identificador exclusivo do recurso, como seu nome. Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).
  + o [atributos DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html).

**Topics**
+ [Exemplo de modelo](#resource-import-new-stack-example-template)
+ [Criar uma pilha com recursos existentes usando a Console de gerenciamento da AWS](#resource-import-new-stack-console)
+ [Criar uma pilha com recursos existentes usando a AWS CLI](#resource-import-new-stack-cli)

## Exemplo de modelo
<a name="resource-import-new-stack-example-template"></a>

Nesta demonstração, partimos do pressuposto de que você esteja usando o exemplo de modelo a seguir, denominado `TemplateToImport.json`, que especifica duas tabelas do DynamoDB que foram criadas fora do CloudFormation. A `ServiceTable` e a `GamesTable` são os destinos de importação. 

**nota**  
Este modelo serve apenas de exemplo. Para usá-lo em seus próprios testes, substitua os recursos do exemplo por recursos da sua conta. 

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
        "ServiceTable": {
            "Type": "AWS::DynamoDB::Table",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "Service",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        }
    }
}
```

## Criar uma pilha com recursos existentes usando a Console de gerenciamento da AWS
<a name="resource-import-new-stack-console"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na página **Stacks (Pilhas)**, escolha **Create stack (Criar pilha)** e **With existing resources (import resources) (Com recursos existentes (importar recursos))**.  
![\[A opção Criar pilha com recursos existentes no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/create-stack-with-existing-resources.png)

1. Leia a página **Import overview (Visão geral da importação)** para obter uma lista de itens que você deve fornecer durante esta operação. Em seguida, escolha **Próximo**.

1. Na página **Specify template (Especificar modelo)**, forneça o modelo usando um dos métodos a seguir e escolha **Next (Próximo)**.
   + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique o URL do modelo na caixa de texto.
   + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure o arquivo de modelo.

1. Na página **Identify resources (Identificar recursos)**, identifique todos os recursos de destino. Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

   1. Em **Identifier property (Propriedade do identificador)**, escolha o tipo de identificador do recurso. Por exemplo, o recurso `AWS::DynamoDB::Table` pode ser identificado usando a propriedade `TableName`.

   1. Em **Identifier value (Valor do identificador)**, digite o valor real da propriedade. Por exemplo, o `TableName` para o recurso `GamesTable` no modelo de exemplo é `Games`. 

   1. Escolha **Próximo**.

1. Na página **Specify stack details (Especificar detalhes da pilha)**, modifique os parâmetros e escolha **Next (Próximo)**. Isso cria automaticamente um conjunto de alterações.
**Importante**  
A operação de importação falhará se você modificar os parâmetros existentes que iniciam uma operação de criação, atualização ou exclusão.

1. Na página **Review *stack-name*** (Revisar nome-pilha), confirme se os recursos corretos estão sendo importados e escolha **Import resources** (Importar recursos). Isso executa automaticamente o conjunto de alterações criado na última etapa.

   O painel **Events (Eventos)** da página **Stack details (Detalhes da pilha)** da nova pilha é exibido.  
![\[A guia Eventos no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/import-events.png)

1. (Opcional) Execute a detecção de desvios na pilha para garantir que o modelo e a configuração real dos recursos importados sejam correspondentes. Para obter mais informações sobre como detectar desvios, consulte [Detectar desvio em uma pilha inteira do CloudFormation](detect-drift-stack.md).

1. (Opcional) Se os recursos importados não corresponderem às configurações de modelo esperadas, corrija as configurações do modelo ou atualize diretamente os recursos. Nesta demonstração, corrigimos as configurações do modelo para corresponder às configurações reais.

   1. [Reverter a operação de importação](resource-import-revert.md#resource-import-revert-console) para os recursos afetados.

   1. Adicione os destinos de importação ao modelo novamente, garantindo que as configurações do modelo correspondam às configurações atuais.

   1. Repita as etapas de 2 a 8 usando o modelo modificado para importar os recursos novamente.

## Criar uma pilha com recursos existentes usando a AWS CLI
<a name="resource-import-new-stack-cli"></a>

1. Para saber quais propriedades identificam cada tipo de recurso no modelo, execute o comando **get-template-summary**, especificando o URL do S3 do modelo. Por exemplo, o recurso `AWS::DynamoDB::Table` pode ser identificado usando a propriedade `TableName`. Para o recurso `GamesTable` no modelo de exemplo, o valor de `TableName` é `Games`. Você precisará dessas informações na próxima etapa.

   ```
   aws cloudformation get-template-summary \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json
   ```

   Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

1. Componha uma lista com os recursos reais do seu modelo e os identificadores exclusivos no formato de string JSON apresentado a seguir.

   ```
   [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]
   ```

   Como alternativa, é possível especificar os parâmetros formatados em JSON em um arquivo de configuração.

   Por exemplo, para importar `ServiceTable` e `GamesTable`, é possível criar um arquivo *ResourcesToImport.txt* que contém a configuração apresentada a seguir.

   ```
   [
      {
         "ResourceType":"AWS::DynamoDB::Table",
         "LogicalResourceId":"GamesTable",
         "ResourceIdentifier":{
            "TableName":"Games"
         }
      },
      {
         "ResourceType":"AWS::DynamoDB::Table",
         "LogicalResourceId":"ServiceTable",
         "ResourceIdentifier":{
            "TableName":"Service"
         }
      }
   ]
   ```

1. Para criar um conjunto de alterações, use o comando **create-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. Para a opção,`--change-set-type` especifique um valor de **IMPORT**. Para a opção `--resources-to-import`, substitua a string JSON de exemplo pela string JSON real que você acabou de criar.

   ```
   aws cloudformation create-change-set \
       --stack-name TargetStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]'
   ```
**nota**  
A opção `--resources-to-import` não oferece suporte para a linguagem YAML incorporada. Os requisitos para usar sequências de escape de aspas em uma string JSON variam de acordo com o terminal utilizado. Para obter mais informações, consulte [Using quotation marks inside strings](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) no *Guia do usuário da AWS Command Line Interface*.

   Como alternativa, é possível usar um URL de arquivo como entrada para a opção `--resources-to-import`, conforme mostrado no exemplo a seguir.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

1. Revise o conjunto de alterações para garantir que os recursos corretos sejam importados.

   ```
   aws cloudformation describe-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. Para iniciar o conjunto de alterações e importar os recursos, use o comando **execute-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. Após a conclusão bem-sucedida da operação `(IMPORT_COMPLETE)`, os recursos são importados com êxito.

   ```
   aws cloudformation execute-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. (Opcional) Execute a detecção de desvios na pilha `IMPORT_COMPLETE` para garantir que o modelo e a configuração real dos recursos importados sejam correspondentes. Para obter mais informações sobre como detectar desvios, consulte [Detectar desvios em recursos de pilha individuais](detect-drift-resource.md).

   1. Execute a detecção de desvio na pilha especificada.

      ```
      aws cloudformation detect-stack-drift --stack-name TargetStack
      ```

      Se a detecção ocorrer com êxito, esse comando retornará o exemplo de saída apresentado a seguir.

      ```
      { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
      ```

   1. Visualize o progresso de uma operação de detecção de desvio para o ID de detecção de desvio de pilha especificado.

      ```
      aws cloudformation describe-stack-drift-detection-status \
          --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
      ```

   1. Visualize as informações de desvio para os recursos que foram verificados em busca de desvios na pilha especificada.

      ```
      aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
      ```

1. (Opcional) Se os recursos importados não corresponderem às configurações de modelo esperadas, corrija as configurações do modelo ou atualize diretamente os recursos. Nesta demonstração, corrigimos as configurações do modelo para corresponder às configurações reais.

   1. [Reverter a operação de importação](resource-import-revert.md#resource-import-revert-cli) para os recursos afetados.

   1. Adicione os destinos de importação ao modelo novamente, garantindo que as configurações do modelo correspondam às configurações atuais.

   1. Repita as etapas de 3 a 6 usando o modelo modificado para importar os recursos novamente.

# Importar recursos existentes para uma pilha
<a name="resource-import-existing-stack"></a>

Este tópico mostra como importar recursos existentes da AWS para uma pilha existente, descrevendo-os em um modelo. Para, em vez disso, verificar os recursos existentes e gerar automaticamente um modelo que você possa usar para importar recursos existentes para o CloudFormation ou replicar os recursos em uma nova conta, consulte [Gerar modelos a partir de recursos existentes com o gerador de IaC](generate-IaC.md).

**Pré-requisitos**

Antes de começar, você deve ter o seguinte:
+ Um modelo que descreva toda a pilha, incluindo tanto os recursos que já fazem parte da pilha quanto os recursos a serem importados. Salve o modelo do localmente ou em um bucket do Amazon S3. 

  **Para obter uma cópia de um modelo de pilha em execução**

  1. Abra o console do CloudFormation em [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

  1. Na lista de pilhas, escolha a pilha da qual deseja recuperar o modelo.

  1. No painel de detalhes da pilha, escolha a guia **Modelo** e escolha **Copiar para a área de transferência**.

  1. Cole o código em um editor de texto para começar a adicionar outros recursos ao modelo.
+ Para cada recurso que você desejar importar, inclua o seguinte:
  + as propriedades e os valores das propriedades que definem a configuração atual do recurso.
  + o identificador exclusivo do recurso, como seu nome. Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).
  + o [atributos DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html).

**Topics**
+ [Exemplo de modelo](#resource-import-existing-stack-example-template)
+ [Importar um recurso existente para a pilha usando a Console de gerenciamento da AWS](#resource-import-existing-stack-console)
+ [Importar um recurso existente para a pilha usando a AWS CLI](#resource-import-existing-stack-cli)

## Exemplo de modelo
<a name="resource-import-existing-stack-example-template"></a>

Nesta demonstração, partimos do pressuposto de que você esteja usando o exemplo de modelo a seguir, denominado `TemplateToImport.json`, que especifica duas tabelas do DynamoDB. A `ServiceTable` faz parte da pilha atualmente e a `GamesTable` é a tabela que você deseja importar.

**nota**  
Este modelo serve apenas de exemplo. Para usá-lo em seus próprios testes, substitua os recursos do exemplo por recursos da sua conta. 

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Import test",
    "Resources": {
        "ServiceTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "TableName": "Service",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        },
        "GamesTable": {
            "Type": "AWS::DynamoDB::Table",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "Games",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "key",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "key",
                        "KeyType": "HASH"
                    }
                ],
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 1
                }
            }
        }
    }
}
```

## Importar um recurso existente para a pilha usando a Console de gerenciamento da AWS
<a name="resource-import-existing-stack-console"></a>

**nota**  
O console do CloudFormation não oferece suporte ao uso da função intrínseca `Fn::Transform` ao importar recursos. É possível usar o AWS CLI para importar recursos que usem a função `Fn::Transform`.

1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na página **Stacks (Pilhas)**, escolha a pilha para a qual deseja importar os recursos.

1. Escolha **Stack actions (Ações da pilha)** e **Import resources into stack (Importar recursos para a pilha)**.  
![\[A opção Importar recursos para a pilha no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Consulte a página **Import overview (Visão geral da importação)** e escolha **Next (Próximo)**.

1. Na página**Specify template (Especificar modelo)**, forneça o modelo atualizado usando um dos métodos a seguir e escolha **Next (Próximo)**.
   + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique o URL do modelo na caixa de texto.
   + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure o arquivo de modelo.

1. Na página **Identify resources (Identificar recursos)**, identifique todos os recursos de destino. Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

   1. Em **Identifier property (Propriedade do identificador)**, escolha o tipo de identificador do recurso. Por exemplo, o recurso `AWS::DynamoDB::Table` pode ser identificado usando a propriedade `TableName`.

   1. Em **Identifier value (Valor do identificador)**, digite o valor real da propriedade. Por exemplo, o `TableName` para o recurso `GamesTable` no modelo de exemplo é `Games`.

   1. Escolha **Próximo**.

1. Na página **Specify stack details (Especificar detalhes da pilha)**, atualize os parâmetros e escolha **Next (Próximo)**. Isso cria automaticamente um conjunto de alterações.
**nota**  
A operação de importação falhará se você modificar os parâmetros existentes que iniciam uma operação de criação, atualização ou exclusão.

1. Na página **Review *stack-name*** (Revisar nome-pilha), revise os recursos a serem importados e escolha **Import resources** (Importar recursos). Isso executa automaticamente o conjunto de alterações criado na última etapa. As tags no nível da pilha são aplicadas aos recursos importados no momento. Para obter mais informações, consulte [Configurar opções da pilha](cfn-console-create-stack.md#configure-stack-options).

   A página **Events** (Eventos) da pilha é exibida.  
![\[A guia Eventos no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/import-events.png)

1. (Opcional) Execute a detecção de desvios na pilha para garantir que o modelo e a configuração real dos recursos importados sejam correspondentes. Para obter mais informações sobre como detectar desvios, consulte [Detectar desvio em uma pilha inteira do CloudFormation](detect-drift-stack.md).

1. (Opcional) Se os recursos importados não corresponderem às configurações de modelo esperadas, corrija as configurações do modelo ou atualize diretamente os recursos. Para obter mais informações sobre como importar recursos com desvio, consulte [Resolver o desvio com uma operação de importação](resource-import-resolve-drift.md).

## Importar um recurso existente para a pilha usando a AWS CLI
<a name="resource-import-existing-stack-cli"></a>

1. Para saber quais propriedades identificam cada tipo de recurso no modelo, execute o comando **get-template-summary**, especificando o URL do S3 do modelo. Por exemplo, o recurso `AWS::DynamoDB::Table` pode ser identificado usando a propriedade `TableName`. Para o recurso `GamesTable` no modelo de exemplo, o valor de `TableName` é `Games`. Você precisará dessas informações na próxima etapa.

   ```
   aws cloudformation get-template-summary \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json
   ```

   Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

1. Componha uma lista com os recursos reais a serem importados e os identificadores exclusivos no formato de string JSON apresentado a seguir.

   ```
   [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]
   ```

   Como alternativa, é possível especificar os parâmetros formatados em JSON em um arquivo de configuração. 

   Por exemplo, para importar `GamesTable`, é possível criar um arquivo *ResourcesToImport.txt* que contém a configuração apresentada a seguir.

   ```
   [
     {
         "ResourceType":"AWS::DynamoDB::Table",
         "LogicalResourceId":"GamesTable",
         "ResourceIdentifier": {
           "TableName":"Games"
         }
     }
   ]
   ```

1. Para criar um conjunto de alterações, use o comando **create-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. Para a opção,`--change-set-type` especifique um valor de **IMPORT**. Para a opção `--resources-to-import`, substitua a string JSON de exemplo pela string JSON real que você acabou de criar.

   ```
   aws cloudformation create-change-set \
       --stack-name TargetStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-url https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]'
   ```
**nota**  
A opção `--resources-to-import` não oferece suporte para a linguagem YAML incorporada. Os requisitos para usar sequências de escape de aspas em uma string JSON variam de acordo com o terminal utilizado. Para obter mais informações, consulte [Using quotation marks inside strings](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) no *Guia do usuário da AWS Command Line Interface*.

   Como alternativa, é possível usar um URL de arquivo como entrada para a opção `--resources-to-import`, conforme mostrado no exemplo a seguir.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

1. Revise o conjunto de alterações para garantir que os recursos corretos sejam importados.

   ```
   aws cloudformation describe-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. Para iniciar o conjunto de alterações e importar os recursos, use o comando **execute-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. As tags no nível da pilha são aplicadas aos recursos importados no momento. Para obter mais informações, consulte [Configurar opções da pilha](cfn-console-create-stack.md#configure-stack-options). Após a conclusão bem-sucedida da operação `(IMPORT_COMPLETE)`, os recursos são importados com êxito.

   ```
   aws cloudformation execute-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStack
   ```

1. (Opcional) Execute a detecção de desvios na pilha `IMPORT_COMPLETE` para garantir que o modelo e a configuração real dos recursos importados sejam correspondentes. Para obter mais informações sobre como detectar desvios, consulte [Detectar desvio em uma pilha inteira do CloudFormation](detect-drift-stack.md).

   1. Execute a detecção de desvio na pilha especificada.

      ```
      aws cloudformation detect-stack-drift --stack-name TargetStack
      ```

      Se a detecção ocorrer com êxito, esse comando retornará o exemplo de saída apresentado a seguir.

      ```
      { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }
      ```

   1. Visualize o progresso de uma operação de detecção de desvio para o ID de detecção de desvio de pilha especificado.

      ```
      aws cloudformation describe-stack-drift-detection-status \
          --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample
      ```

   1. Visualize as informações de desvio para os recursos que foram verificados em busca de desvios na pilha especificada.

      ```
      aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
      ```

1. (Opcional) Se os recursos importados não corresponderem às configurações de modelo esperadas, corrija as configurações do modelo ou atualize diretamente os recursos. Para obter mais informações sobre como importar recursos com desvio, consulte [Resolver o desvio com uma operação de importação](resource-import-resolve-drift.md).

# Mover recursos entre pilhas
<a name="refactor-stacks"></a>

Com o recurso `resource import`, é possível mover recursos entre pilhas ou *refatorar* pilhas. Primeiro, você precisa adicionar uma política de exclusão `Retain` ao recurso que você deseja mover para garantir que o recurso seja preservado ao removê-lo da pilha de origem e importá-lo na pilha de destino.

Se você não tiver familiaridade com a importação, recomendamos que primeiro revise as informações introdutórias no tópico [Importar recursos da AWS para uma pilha do CloudFormation](import-resources.md).

**Importante**  
Nem todos os recursos são compatíveis com as operações de importação. Consulte [Recursos compatíveis com as operações de importação](resource-import-supported-resources.md) antes de remover um recurso da pilha. Se você remover um recurso que não é compatível com operações de importação da pilha, não será possível importar o recurso para outra pilha ou trazê-lo de volta para a pilha de origem.

## Refatorar uma pilha usando o Console de gerenciamento da AWS
<a name="refactor-stacks-console"></a>

1. No modelo de origem, especifique uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain` para o recurso que deseja mover.

   No modelo de origem de exemplo a seguir, `Games` é o destino desta refatoração.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Abra o console do CloudFormation para executar uma atualização de pilha para aplicar a política de exclusão.

   1. Na página **Stacks (Pilhas)** com a pilha selecionada, escolha **Update (Atualizar)**.

   1. Em **Preparar modelo**, escolha **Substituir modelo atual**.

   1. Em **Specify template (Especificar modelo)**, forneça o modelo de origem atualizado com o atributo `DeletionPolicy` na `GamesTable` e escolha **Next (Próximo)**.
      + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique o URL para o modelo de origem atualizado na caixa de texto.
      + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure o arquivo de modelo de origem atualizado.

   1. Na página **Specify stack details (Especificar detalhes da pilha)** nenhuma alteração é necessária. Escolha **Próximo**.

   1. Na página **Configure stack options (Configurar opções de pilha)** nenhuma alteração é necessária. Escolha **Próximo**.

   1. Na página **Analisar *SourceStackName***, analise as alterações. Se o seu modelo contém recursos do IAM, selecione **I acknowledge that this template may create IAM resources (Eu reconheço que este modelo pode criar recursos do IAM)** para especificar que você deseja usar recursos do IAM no modelo. Para obter mais informações sobre o uso de recursos do IAM em modelos, consulte [Controle o acesso ao CloudFormation com o AWS Identity and Access Management](control-access-with-iam.md). Depois, atualize sua pilha de origem criando um conjunto de alterações ou atualize sua pilha de origem diretamente.

1. Remova o recurso, os parâmetros relacionados e as saídas do modelo de origem e adicione-os ao modelo de destino.

   O modelo de origem agora se parece com o seguinte.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           }
       }
   }
   ```

   O modelo de destino de exemplo a seguir tem atualmente o recurso `PlayersTable` e agora também contém `GamesTable`.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "PlayersTable": {
               "Type": "AWS::DynamoDB::Table",
               "Properties": {
                   "TableName": "Players",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Repita as etapas 2 e 3 para atualizar a pilha de origem novamente, desta vez para excluir o recurso de destino da pilha.

1. Execute uma operação de importação para adicionar `GamesTable` à pilha de destino.

   1. Na página **Stacks (Pilhas)**, com a pilha pai selecionada, escolha **Stack actions (Ações da pilha)** e **Import resources into stack (Importar recursos para a pilha)**.  
![\[A opção Importar recursos para a pilha no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

   1. Leia a página **Import overview (Visão geral da importação)** para obter uma lista de itens que você deve fornecer durante esta operação. Em seguida, escolha **Próximo**.

   1. Na página **Specify template** (Especificar modelo), siga um destes procedimentos e escolha **Next** (Próximo).
      + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique um URL na caixa de texto.
      + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure um arquivo a ser carregado.

   1. Na página **Identify resources (Identificar recursos)** identifique o recurso que você está movendo (neste exemplo, `GamesTable`). Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

      1. Em **Identifier property (Propriedade do identificador)**, escolha o tipo de identificador do recurso. Por exemplo, um recurso `AWS::DynamoDB::Table` pode ser identificado usando a propriedade `TableName`.

      1. Em **Identifier value (Valor do identificador)**, digite o valor real da propriedade. Por exemplo, .`GamesTables` 

      1. Escolha **Próximo**.

   1. Na página **Specify stack details (Especificar detalhes da pilha)**, modifique os parâmetros e escolha **Next (Próximo)**. Isso cria automaticamente um conjunto de alterações.
**Importante**  
A operação de importação falhará se você modificar os parâmetros existentes que iniciam uma operação de criação, atualização ou exclusão.

   1. Na página **Analisar *TargetStackName***, confirme se o recurso correto está sendo importado e, em seguida, escolha **Importar recursos**. Isso inicia automaticamente o conjunto de alterações criadas na última etapa. As [tags no nível da pilha](cfn-console-create-stack.md#configure-stack-options) são aplicadas aos recursos importados no momento.

   1. O painel **Events (Eventos)** da página **Stack details (Detalhes da pilha)** de sua pilha pai será exibido.  
![\[A guia Eventos no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/import-events.png)
**nota**  
Não é necessário executar a detecção de desvio na pilha pai após essa operação de importação, pois o recurso `AWS::CloudFormation::Stack` já é gerenciado pelo CloudFormation.

## Refatorar uma pilha usando o AWS CLI
<a name="refactor-stacks-cli"></a>

1. No modelo de origem, especifique uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain` para o recurso que deseja mover.

   No modelo de origem de exemplo a seguir, `GamesTable` é o destino desta refatoração.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Atualize a pilha de origem para aplicar a política de exclusão ao recurso.

   ```
   aws cloudformation update-stack --stack-name SourceStackName
   ```

1. Remova o recurso, os parâmetros relacionados e as saídas do modelo de origem e adicione-os ao modelo de destino.

   O modelo de origem agora se parece com o seguinte.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           }
       }
   }
   ```

   O modelo de destino de exemplo a seguir tem atualmente o recurso `PlayersTable` e agora também contém `GamesTable`.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "PlayersTable": {
               "Type": "AWS::DynamoDB::Table",
               "Properties": {
                   "TableName": "Players",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Atualize a pilha de origem para excluir o recurso `GamesTable` e os parâmetros relacionados, além das saídas da pilha.

   ```
   aws cloudformation update-stack --stack-name SourceStackName
   ```

1. Componha uma lista com os recursos reais a serem importados e os identificadores exclusivos no formato de string JSON apresentado a seguir. Para obter mais informações, consulte [Identificadores de recursos](import-resources-manually.md#resource-import-identifiers-unique-ids).

   ```
   [{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]
   ```

   Como alternativa, é possível especificar os parâmetros formatados em JSON em um arquivo de configuração. 

   Por exemplo, para importar `GamesTable`, é possível criar um arquivo *ResourcesToImport.txt* que contém a configuração apresentada a seguir.

   ```
   [
     {
         "ResourceType":"AWS::DynamoDB::Table",
         "LogicalResourceId":"GamesTable",
         "ResourceIdentifier": {
           "TableName":"Games"
         }
     }
   ]
   ```

1. Para criar um conjunto de alterações, use o comando **create-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. Para a opção,`--change-set-type` especifique um valor de **IMPORT**. Para a opção `--resources-to-import`, substitua a string JSON de exemplo pela string JSON real que você acabou de criar.

   ```
   aws cloudformation create-change-set \
       --stack-name TargetStackName --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-body file://TemplateToImport.json \
       --resources-to-import "'[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]'"
   ```
**nota**  
A opção `--resources-to-import` não oferece suporte para a linguagem YAML incorporada. Os requisitos para usar sequências de escape de aspas em uma string JSON variam de acordo com o terminal utilizado. Para obter mais informações, consulte [Using quotation marks inside strings](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) no *Guia do usuário da AWS Command Line Interface*.

   Como alternativa, é possível usar um URL de arquivo como entrada para a opção `--resources-to-import`, conforme mostrado no exemplo a seguir.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

1. Revise o conjunto de alterações para certificar-se de que o recurso correto está sendo importado para a pilha de destino.

   ```
   aws cloudformation describe-change-set \
       --change-set-name ImportChangeSet
   ```

1. Para iniciar o conjunto de alterações e importar o recurso, use o comando **execute-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. As tags no nível da pilha são aplicadas aos recursos importados no momento. Após a conclusão com êxito da operação `(IMPORT_COMPLETE)`, o recurso será importado com êxito.

   ```
   aws cloudformation execute-change-set \
       --change-set-name ImportChangeSet --stack-name TargetStackName
   ```
**nota**  
Não é necessário executar a detecção de desvio na pilha de destino após a operação de importação porque o recurso já é gerenciado pelo CloudFormation.

# Aninhar uma pilha existente
<a name="resource-import-nested-stacks"></a>

Use o recurso `resource import` para aninhar uma pilha existente em outra pilha existente. As pilhas aninhadas são componentes comuns que você declara e às quais faz referência a partir de outros modelos. Dessa forma, você pode evitar copiar e colar as mesmas configurações nos modelos e simplificar as atualizações de pilha. Se tiver um modelo para um componente comum, você poderá usar o recurso `AWS::CloudFormation::Stack` para fazer referência a este modelo a partir de outro modelo. Para saber mais sobre pilhas aninhadas, consulte [Dividir um modelo em partes reutilizáveis usando pilhas aninhadas](using-cfn-nested-stacks.md).

CloudFormation O oferece suporte a apenas um nível de aninhamento usando `resource import`. Isso significa que você não pode importar uma pilha em uma pilha filho ou importar uma pilha com filhos.

Se você não tiver familiaridade com a importação, recomendamos que primeiro revise as informações introdutórias no tópico [Importar recursos da AWS para uma pilha do CloudFormation manualmente](import-resources-manually.md).

## Validação da importação da pilha aninhada
<a name="resource-import-nested-stacks-validation"></a>

Durante uma operação de importação de pilha aninhada, o CloudFormation realiza as validações a seguir.
+ A definição aninhada de `AWS::CloudFormation::Stack` no modelo de pilha pai corresponde ao modelo da pilha real aninhada.
+ As tags da definição aninhada de `AWS::CloudFormation::Stack` no modelo de pilha pai correspondem às tags do recurso de pilha real aninhada.

## Aninhar uma pilha existente usando o . Console de gerenciamento da AWS
<a name="resource-import-nested-stacks-console"></a>

1. Adicione o recurso `AWS::CloudFormation::Stack` ao modelo de pilha pai com uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain`. No modelo de exemplo de pilha principal, apresentado a seguir, `MyNestedStack` corresponde ao destino da importação.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Abra o CloudFormation Console.

1. Na página **Stacks (Pilhas)**, com a pilha pai selecionada, escolha **Stack actions (Ações da pilha)** e **Import resources into stack (Importar recursos para a pilha)**.  
![\[A opção Importar recursos para a pilha no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Leia a página **Import overview (Visão geral da importação)** para obter uma lista de itens que você deve fornecer durante esta operação. Em seguida, escolha **Próximo**.

1. Na página **Specify template (Especificar modelo)**, forneça o modelo pai atualizado usando um dos métodos a seguir e escolha **Next (Próximo)**.
   + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique o URL do modelo na caixa de texto.
   + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure o arquivo de modelo.

1. Na página **Identify resources (Identificar recursos)**, identifique o recurso `AWS::CloudFormation::Stack`.

   1. Em **Identifier property (Propriedade do identificador)**, escolha o tipo de identificador do recurso. Por exemplo, um recurso `AWS::CloudFormation::Stack` pode ser identificado usando a propriedade `StackId`.

   1. Em **Valor do identificador**, digite o ARN da pilha que você está importando. Por exemplo, `arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10`.  
![\[A página Identificar recursos no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/resource-import-stackid.png)

   1. Escolha **Próximo**.

1. Na página **Specify stack details (Especificar detalhes da pilha)**, modifique os parâmetros e escolha **Next (Próximo)**. Isso cria automaticamente um conjunto de alterações.
**Importante**  
A operação de importação falhará se você modificar os parâmetros existentes que iniciam uma operação de criação, atualização ou exclusão.

1. Na página **Analisar *MyParentStack***, confirme se o recurso correto está sendo importado e, em seguida, escolha **Importar recursos**. Isso executa automaticamente o conjunto de alterações criado na última etapa. As tags no nível da pilha são aplicadas aos recursos importados no momento.

1. O painel **Events (Eventos)** da página **Stack details (Detalhes da pilha)** de sua pilha pai será exibido.  
![\[A guia Eventos no console.\]](http://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/images/import-events.png)
**nota**  
Não é necessário executar a detecção de desvios na pilha pai após a operação de importação porque o recurso `AWS::CloudFormation::Stack` já foi gerenciado pelo CloudFormation.

## Aninhar uma pilha existente usando o . AWS CLI
<a name="resource-import-nested-stacks-cli"></a>

1. Adicione o recurso `AWS::CloudFormation::Stack` ao modelo de pilha pai com uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain`. No modelo pai do exemplo a seguir, `MyNestedStack` é o destino da importação.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Componha uma string JSON, conforme mostrado no exemplo a seguir, com estas modificações: 
   + Substitua *MyNestedStack* pelo ID lógico do recurso de destino, conforme especificado no modelo.
   + Substitua *arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10* pelo ARN da pilha que você deseja importar.

   ```
   [{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-east-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]
   ```

   Como alternativa, é possível especificar os parâmetros em um arquivo de configuração. 

   Por exemplo, para importar `MyNestedStack`, é possível criar um arquivo *ResourcesToImport.txt* que contenha a configuração apresentada a seguir.

   **JSON**

   ```
   [
     {
         "ResourceType":"AWS::CloudFormation::Stack",
         "LogicalResourceId":"MyNestedStack",
         "ResourceIdentifier": {
           "StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"
         }
     }
   ]
   ```

   **YAML**

   ```
   ResourceType: AWS::CloudFormation::Stack
     LogicalResourceId: MyNestedStack
     ResourceIdentifier:
       StackId: >-
         arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
   ```

1. Para criar um conjunto de alterações, use o comando **create-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. Para a opção,`--change-set-type` especifique um valor de **IMPORT**. Para a opção `--resources-to-import`, substitua a string JSON de exemplo pela string JSON real que você acabou de criar.

   ```
   aws cloudformation create-change-set \
       --stack-name MyParentStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-body file://TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]'
   ```
**nota**  
A opção `--resources-to-import` não oferece suporte para a linguagem YAML incorporada. Os requisitos para usar sequências de escape de aspas em uma string JSON variam de acordo com o terminal utilizado. Para obter mais informações, consulte [Using quotation marks inside strings](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) no *Guia do usuário da AWS Command Line Interface*.

   Como alternativa, é possível usar um URL de arquivo como entrada para a opção `--resources-to-import`, conforme mostrado no exemplo a seguir.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

   Se a detecção ocorrer com êxito, esse comando retornará o exemplo de saída apresentado a seguir.

   ```
   {
       "Id": "arn:aws:cloudformation:us-west-2:12345678910:changeSet/ImportChangeSet/8ad75b3f-665f-46f6-a200-0b4727a9442e",
       "StackId": "arn:aws:cloudformation:us-west-2:12345678910:stack/MyParentStack/4e345b70-1281-11ef-b027-027366d8e82b"
   }
   ```

1. Revise o conjunto de alterações para garantir que a pilha correta está sendo importada.

   ```
   aws cloudformation describe-change-set --change-set-name ImportChangeSet
   ```

1. Para iniciar o conjunto de alterações e importar a pilha para a pilha principal de origem, use o comando **execute-change-set**, apresentado a seguir, e substitua o texto do espaço reservado. As [tags no nível da pilha](cfn-console-create-stack.md#configure-stack-options) são aplicadas aos recursos importados no momento. Após concluir a operação de importação `(IMPORT_COMPLETE)`, a pilha será aninhada com êxito.

   ```
   aws cloudformation execute-change-set --change-set-name ImportChangeSet
   ```
**nota**  
Não é necessário executar a detecção de desvio na pilha pai após essa operação de importação, pois o recurso `AWS::CloudFormation::Stack` já é gerenciado pelo CloudFormation.

# Importar recursos da AWS para uma pilha do CloudFormation automaticamente
<a name="import-resources-automatically"></a>

Agora, é possível importar *recursos nomeados* automaticamente ao criar ou atualizar pilhas do CloudFormation. Um *recurso nomeado* é um recurso com nome personalizado. Para obter mais informações, consulte [Tipo de nome](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-name.html) na *Referência de modelos do CloudFormation*.

Quando a importação automática é iniciada, o CloudFormation verifica os recursos existentes que correspondem ao modelo e os importa durante a implantação. No caso de pilhas aninhadas, crie o conjunto de alterações a partir da pilha raiz.

Após a importação ter sido concluída, e antes de realizar as operações de pilhas subsequentes, recomendamos executar a detecção de desvios nos recursos importados. A detecção de desvios garante que a configuração do modelo corresponda à configuração real. Para obter mais informações, consulte [Detectar desvio em uma pilha inteira do CloudFormation](detect-drift-stack.md).

Para importar um recurso, é necessário que ele atenda aos seguintes requisitos:
+ O recurso deve ter um nome personalizado estático definido no modelo. No momento, não há suporte para nomes dinâmicos (usando \$1Ref ou outras funções).
+ O recurso deve ter `DeletionPolicy` de `Retain` ou `RetainExceptOnCreate`.
+ O recurso não deve pertencer a outra pilha do CloudFormation.
+ O tipo de recurso deve ser compatível com operações de importação do CloudFormation. Para obter mais informações, consulte [Suporte a tipos de recursos](resource-import-supported-resources.md).
+ O ID primário do tipo de recurso deve estar no modelo. Não há suporte a IDs primários com propriedades somente leitura. Para descobrir qual é o ID primário de um tipo, procure a propriedade `primaryIdentifier` no esquema do recurso. Para obter mais informações sobre a propriedade, consulte [primaryIdentifier](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html#schema-properties-primaryidentifier).

**Example Exemplo de importação automática**  
O exemplo a seguir usa um conjunto de alterações, `CreateChangeSet`, para criar uma pilha chamada `my-stack` com base em um arquivo de modelo, `template.yaml`, e importa os recursos correspondentes de maneira automática.  

```
aws cloudformation create-change-set \
  --stack-name my-stack \
  --change-set-name CreateChangeSet \
  --change-set-type CREATE \
  --template-body file://template.yaml \
  --import-existing-resources
```

## Solução de problemas
<a name="auto-import-troubleshooting"></a>

Se a importação automática falhar, faça o seguinte para solucionar o problema:
+ Verifique se o nome do recurso no modelo corresponde exatamente ao nome do recurso
+ Verifique se o recurso não está sendo gerenciado por outra pilha
+ Certifique-se de que o tipo de recurso ofereça suporte às operações de importação
+ Verifique se o modelo inclui todas as propriedades necessárias para o tipo de recurso

# Reverter uma operação de importação
<a name="resource-import-revert"></a>

Para reverter uma operação de importação, especifique uma política de exclusão `Retain` para o recurso que você deseja remover do modelo para garantir que ele seja preservado ao excluí-lo da pilha.

## Reverter uma operação de importação usando a Console de gerenciamento da AWS
<a name="resource-import-revert-console"></a>

1. Especifique uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain` para os recursos que você deseja remover da pilha. No modelo de exemplo a seguir, `GamesTable` é o destino desta operação de reversão.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Abra o console do CloudFormation para executar uma atualização de pilha para aplicar a política de exclusão.

   1. Na página **Stacks (Pilhas)** com a pilha selecionada, escolha **Update (Atualizar)** e selecione **Update stack (standard) (Atualizar pilha (padrão))**.

   1. Em **Preparar modelo**, escolha **Substituir modelo atual**.

   1. Em **Specify template (Especificar modelo)**, forneça o modelo de origem atualizado com o atributo `DeletionPolicy` na `GamesTable` e escolha **Next (Próximo)**.
      + Escolha **Amazon S3 URL (URL do Amazon S3)** e especifique o URL para o modelo de origem atualizado na caixa de texto.
      + Escolha **Upload a template file (Fazer upload de um arquivo de modelo)** e procure o arquivo de modelo de origem atualizado.

   1. Na página **Specify stack details (Especificar detalhes da pilha)** nenhuma alteração é necessária. Escolha **Próximo**.

   1. Na página **Configure stack options (Configurar opções de pilha)** nenhuma alteração é necessária. Escolha **Próximo**.

   1. Na página **Analisar *MyStack***, analise as alterações. Se o seu modelo contém recursos do IAM, selecione **I acknowledge that this template may create IAM resources (Eu reconheço que este modelo pode criar recursos do IAM)** para especificar que você deseja usar recursos do IAM no modelo. Para obter mais informações, consulte [Confirmar recursos do IAM em modelos do CloudFormation](control-access-with-iam.md#using-iam-capabilities). Depois, atualize sua pilha de origem criando um conjunto de alterações ou atualize sua pilha de origem diretamente.

1. Remova o recurso, os parâmetros relacionados e as saídas do modelo de pilha. Neste exemplo, o modelo agora se parece com o seguinte.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           }
       }
   }
   ```

1. Repita a etapa 2 para excluir o recurso (`GamesTable`) e os parâmetros relacionados e as saídas da pilha.

## Reverter uma operação de importação usando a AWS CLI
<a name="resource-import-revert-cli"></a>

1. Especifique uma [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html) `Retain` para os recursos que você deseja remover da pilha. No modelo de exemplo a seguir, `GamesTable` é o destino desta operação de reversão.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
           "GamesTable": {
               "Type": "AWS::DynamoDB::Table",
               "DeletionPolicy": "Retain",
               "Properties": {
                   "TableName": "Games",
                   "AttributeDefinitions": [
                       {
                           "AttributeName": "key",
                           "AttributeType": "S"
                       }
                   ],
                   "KeySchema": [
                       {
                           "AttributeName": "key",
                           "KeyType": "HASH"
                       }
                   ],
                   "ProvisionedThroughput": {
                       "ReadCapacityUnits": 5,
                       "WriteCapacityUnits": 1
                   }
               }
           }
       }
   }
   ```

1. Atualize a pilha para aplicar a política de exclusão ao recurso.

   ```
   aws cloudformation update-stack --stack-name MyStack
   ```

1. Remova o recurso, os parâmetros relacionados e as saídas do modelo de pilha. Neste exemplo, o modelo agora se parece com o seguinte.  
**Example JSON**  

   ```
   {
       "AWSTemplateFormatVersion": "2010-09-09",
       "Description": "Import test",
       "Resources": {
           "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           }
       }
   }
   ```

1. Atualize a pilha para excluir o recurso (`GamesTable`) e os parâmetros relacionados, além das saídas da pilha.

   ```
   aws cloudformation update-stack --stack-name MyStack
   ```