Importar recursos existentes para uma pilha - AWS CloudFormation

Importar recursos existentes para uma pilha

Durante esta operação de importação, você precisará fornecer 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. Todos os recursos devem ter um atributo DeletionPolicy no modelo.

  • Um identificador exclusivo para cada recurso de destino. Consulte o console de serviço apropriado para obter identificadores exclusivos.

Neste passo a passo, fornecemos o modelo de exemplo a seguir, chamadoTemplateToImport.json. ServiceTable atualmente faz parte da pilha e GamesTable é o destino da importação.

{ "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 uma pilha usando oAWS Management Console

  1. Faça login no AWS Management Console e abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

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

  3. 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.
  4. Consulte a página Import overview (Visão geral da importação) e escolha Next (Próximo).

  5. Na páginaSpecify 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.

  6. Na página Identify resources (Identificar recursos), identifique todos os recursos de destino.

    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.

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

      
                                    A página Identificar recursos no console.
    3. Escolha Next (Próximo).

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

  8. Na página Review stack-name (Revisar stack-name), 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.

    A página Events (Eventos) da pilha é exibida.

    
                            A guia Eventos no console.
  9. (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 um desvio, consulte Detectar desvios em uma pilha inteira do CloudFormation.

  10. (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.

Importar um recurso existente para a pilha usando a AWS CLI

  1. Como alternativa, execute GetTemplateSummary para saber quais propriedades identificam cada tipo de recurso no 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.

    > aws cloudformation get-template-summary --template-url https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/TemplateToImport.json
  2. Componha uma lista de recursos a serem importados e os respectivos identificadores exclusivos no formato a seguir.

    [{\"ResourceType\":\"AWS::DynamoDB::Table\",\"LogicalResourceId\":\"GamesTable\",\"ResourceIdentifier\":{\"TableName\":\"Games\"}}]
  3. Crie um conjunto de alterações do tipoIMPORT com os parâmetros a seguir. --resources-to-importnão oferece suporte a YAML em linha.

    > aws cloudformation create-change-set --stack-name TargetStack --change-set-name ImportChangeSet --change-set-type IMPORT --resources-to-import "[{\"ResourceType\":\"AWS::DynamoDB::Table\",\"LogicalResourceId\":\"GamesTable\",\"ResourceIdentifier\":{\"TableName\":\"Games\"}}]" --template-url https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/TemplateToImport.json

    A AWS CLI também oferece suporte a arquivos de texto como entrada para o parâmetro resources-to-import, conforme exibido no exemplo a seguir.

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

    Neste passo a passo,file://ResourcesToImport.txt tem o conteúdo a seguir.

    [ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ]
  4. 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
  5. Execute o conjunto de alterações para importar os recursos. As tags no nível da pilha são aplicadas aos recursos importados no momento. 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
  6. (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 um desvio, consulte Detectar desvios em uma pilha inteira do CloudFormation.

    > aws cloudformation detect-stack-drift --stack-name TargetStack { "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" } > aws cloudformation describe-stack-drift-detection-status --stack-drift-detection-id 624af370-311a-11e8-b6b7-500cexample > aws cloudformation describe-stack-resource-drifts --stack-name TargetStack
  7. (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.