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
-
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 a pilha para a qual deseja importar os recursos.
-
Escolha Stack actions (Ações da pilha) e Import resources into stack (Importar recursos para a pilha).
-
Consulte a página Import overview (Visão geral da importação) e escolha Next (Próximo).
-
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.
-
-
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), 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.
-
Na página Review
stack-name
(Revisarstack-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.
-
(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. 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
-
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 de recursos a serem importados 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
\"}}]" --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" } } ]
-
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. 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-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 obter mais informações sobre como detectar um desvio, 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. Para obter mais informações sobre como importar recursos com desvio, consulte Resolver o desvio com uma operação de importação.