Criar uma pilha com recursos existentes
Durante esta operação de importação, você precisará fornecer o seguinte.
-
Um modelo que descreve os recursos que estarão na nova pilha e as configurações do recurso. Todos os recursos no modelo devem ter um atributo DeletionPolicy.
-
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
eGamesTable
são os destinos da importação.
{ "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 } } } } }
Crie uma pilha a partir de recursos existentes usando oAWS Management Console
-
Faça login no AWS Management Console e abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation
. -
Na página Stacks (Pilhas), escolha Create stack (Criar pilha) e With existing resources (import resources) (Com recursos existentes (importar recursos)).
-
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, selecione Next (Próximo).
-
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.
-
-
Na página Identify resources (Identificar recursos), identifique todos os recursos de destino.
-
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 propriedadeTableName
. -
Em Identifier value (Valor do identificador), digite o valor real da propriedade. Por exemplo, o
TableName
para o recursoGamesTable
no modelo de exemplo é
.Games
-
Escolha Next (Próximo).
-
-
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.
-
Na página Review
stack-name
(Revisarstack-name
), 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.
-
(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.
-
(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.
-
Reverter a operação de importação para os recursos afetados.
-
Adicione os destinos de importação ao modelo novamente, garantindo que as configurações do modelo correspondam às configurações atuais.
-
Repita as etapas 2 – 8 usando o modelo modificado para importar os recursos novamente.
-
Criar uma pilha com recursos existentes usando a AWS CLI
-
Abra a AWS CLI.
-
Como alternativa, execute
GetTemplateSummary
para saber quais propriedades identificam cada tipo de recurso no modelo. Por exemplo, o recursoAWS::DynamoDB::Table
pode ser identificado usando a propriedadeTableName
. Para o recursoGamesTable
no modelo de exemplo, o valor deTableName
éGames
.>
aws cloudformation get-template-summary --template-url https://DOC-EXAMPLE-BUCKET
.s3.us-west-2
.amazonaws.com/TemplateToImport.json
-
Componha uma lista dos recursos de destino do modelo e os respectivos identificadores exclusivos no formato a seguir.
[{\"ResourceType\":\"
AWS::DynamoDB::Table
\",\"LogicalResourceId\":\"GamesTable
\",\"ResourceIdentifier\":{\"TableName
\":\"Games
\"}}] -
Crie um conjunto de alterações do tipo
IMPORT
com os parâmetros a seguir.--resources-to-import
não oferece suporte a YAML em linha.>
aws cloudformation create-change-set --stack-nameTargetStack
--change-set-nameImportChangeSet
--change-set-typeIMPORT
--resources-to-import "[{\"ResourceType\":\"AWS::DynamoDB::Table
\",\"LogicalResourceId\":\"GamesTable
\",\"ResourceIdentifier\":{\"TableName
\":\"Games
\"}},{\"ResourceType\":\"AWS::DynamoDB::Table
\",\"LogicalResourceId\":\"ServiceTable
\",\"ResourceIdentifier\":{\"TableName
\":\"Service
\"}}]" --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" } }, { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"ServiceTable", "ResourceIdentifier": { "TableName":"Service" } } ]
-
Revise o conjunto de alterações para garantir que os recursos corretos sejam importados.
>
aws cloudformation describe-change-set --change-set-nameImportChangeSet
--stack-nameTargetStack
-
Execute o conjunto de alterações para importar os recursos. 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-nameImportChangeSet
--stack-nameTargetStack
-
(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 saber mais sobre a detecção de desvios, consulte Detectar desvios em uma pilha inteira do CloudFormation.>
aws cloudformation detect-stack-drift --stack-nameTargetStack
{ "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" }>
aws cloudformation describe-stack-drift-detection-status --stack-drift-detection-id624af370-311a-11e8-b6b7-500cexample
>
aws cloudformation describe-stack-resource-drifts --stack-nameTargetStack
-
(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.
-
Reverter a operação de importação para os recursos afetados.
-
Adicione os destinos de importação ao modelo novamente, garantindo que as configurações do modelo correspondam às configurações atuais.
-
Repita as etapas 4 – 7 usando o modelo modificado para importar os recursos novamente.
-