Como resolvo o erro “Esse modelo não inclui nenhum recurso para importar” no AWS CloudFormation?
Eu recebo o seguinte erro no console do AWS CloudFormation: “Esse modelo não inclui nenhum recurso para importar. Saiba mais.”
Breve descrição
Você recebe esse erro ao usar o console do AWS CloudFormation para importar recursos para uma pilha existente que foi criada fora do CloudFormation.
Esse erro pode ocorrer quando você usa o console do AWS CloudFormation em cenários com:
- Recursos condicionais. O recurso que você está importando tem uma chave de condição associada a uma condição que é avaliada como false.
- Modelos do AWS Serverless Application Model (AWS SAM). O console do AWS CloudFormation não oferece suporte à seção Transformações ao importar recursos. Você não pode importar um recurso com um modelo que usa a transformação AWS::Serverless.
- Fn::Transform. O console do AWS CloudFormation não oferece suporte ao uso da função intrínseca Fn::Transform ao importar recursos.
Você pode usar a AWS Command Line Interface (AWS CLI) em vez do console do AWS CloudFormation para resolver esse erro para modelos usando:
- AWS SAM
- Fn::Transform
Para resolver esse erro para recursos condicionais, verifique se a condição especificada na chave de condição foi avaliada como true para o recurso que está sendo importado.
A AWS CLI requer que você forneça recursos importados explicitamente usando o comando do CloudFormation create-change-set.
Observação: se receber erros ao executar comandos da AWS CLI, verifique se você está usando sua versão mais recente.
Solução
No exemplo a seguir, a AWS CLI é usada para importar um recurso AWS::ECS::Cluster existente em uma pilha do CloudFormation:
Resources: ... ECSCluster2: Condition: MyCondition Type: AWS::ECS::Cluster DeletionPolicy: Retain Properties: ClusterName: Cluster2
Observação: antes de continuar nas próximas etapas, verifique se a condição MyCondition foi avaliada como true.
Para importar o recurso usando a AWS CLI, execute as seguintes etapas:
Observação: se a sua pilha não está na sua região da AWS padrão, adicione --region a seus comandos ou altere a região padrão definindo e exportando a variável de ambiente AWS_DEFAULT_REGION.
1. Crie um arquivo de importação de recursos chamado import.txt. Por exemplo:
[ { "ResourceType": "AWS::ECS::Cluster", "LogicalResourceId": "ECSCluster2" , "ResourceIdentifier": { "ClusterName":"Cluster2" } } ]
2. Para criar um conjunto de alterações em sua pilha, execute o seguinte comando create-change-set:
ID=$(aws cloudformation create-change-set --stack-name testStack --change-set-name testSet --resources-to-import file://import.txt --change-set-type IMPORT --template-body file://template.yaml --capabilities CAPABILITY_AUTO_EXPAND --query 'Id' --output text)
Observação: substitua testStack pelo nome da sua pilha e template.yaml pelo nome do arquivo de modelo do CloudFormation. O comando anterior retorna o nome do recurso da Amazon (ARN) do conjunto de alterações e armazena o ARN na variável de ambiente ID.
Observação: você deverá usar CAPABILITY_AUTO_EXPAND somente se o seu modelo usar transformações.
3. (Opcional) Para esperar que o conjunto de alterações seja criado com êxito, execute o seguinte comando:
aws cloudformation wait change-set-create-complete --change-set-name ${ID}
4. Veja o conjunto de alterações usando o console do AWS CloudFormation. Ou use este comando describe-change-set:
aws cloudformation describe-change-set --change-set-name ${ID}
5. Para aplicar o conjunto de alterações e importar seu recurso para a pilha, execute o seguinte comando:
aws cloudformation execute-change-set --change-set-name ${ID}
6. (Opcional) Para confirmar se todas as propriedades de seu modelo correspondem ao seu recurso, use a detecção de oscilação no recurso.
Informações relacionadas
Importar um recurso existente em uma pilha usando a AWS CLI
Recursos que oferecem suporte a operações de importação e detecção de oscilações
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos