Quiero resolver el siguiente error en la consola de AWS CloudFormation: «Esta plantilla no incluye ningún recurso para importar. Obtenga más información».
Breve descripción
Recibe este error cuando utiliza la consola de CloudFormation para importar recursos a una pila existente que se ha creado fuera de CloudFormation.
Este error puede producirse al utilizar la consola de CloudFormation en las siguientes situaciones:
- El recurso que está importando tiene una clave de condición asociada a una condición que se evalúa como falsa.
- Cuando importa un recurso, utiliza la función intrínseca Fn::Transform o la sección de plantillas de transformación, como AWS::Serverless o AWS::Include.
Para resolver el error de los recursos condicionales, la condición que se especifica en la clave de condición debe evaluarse como verdadera para el recurso que está importando.
Para resolver el error en las plantillas que usan transformaciones, utilice la Interfaz de la línea de comandos de AWS (AWS CLI) en lugar de la consola de AWS CloudFormation.
La AWS CLI requiere que proporcione explícitamente los recursos importados para el comandocreate-change-set de CloudFormation.
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Resolución
El siguiente ejemplo utiliza la AWS CLI para importar un recurso AWS::ECS::Cluster existente a una pila de CloudFormation:
Resources:
...
ECSCluster2:
Condition: MyCondition
Type: AWS::ECS::Cluster
DeletionPolicy: Retain
Properties:
ClusterName: Cluster2
Nota: Antes de continuar con los pasos siguientes, asegúrese de que la condición MyCondition se evalúe como verdadera.
Importación de recursos
Nota: Si su pila no está en la región de AWS predeterminada, añada --region a sus comandos. O bien, configure y exporte la variable de entorno AWS_DEFAULT_REGION para cambiar la región predeterminada.
Para importar los recursos, siga estos pasos:
-
Cree un archivo de importación de recursos denominado import.txt:
[
{
"ResourceType": "AWS::ECS::Cluster",
"LogicalResourceId":
"ECSCluster2"
,
"ResourceIdentifier": {
"ClusterName":"Cluster2"
}
}
]
-
Para crear un conjunto de cambios en su pila, ejecute el 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)
Nota: Sustituya testStack por el nombre de su pila y template.yaml por el nombre del archivo de plantilla de CloudFormation. El comando anterior devuelve el nombre de recurso de Amazon (ARN) del conjunto de cambios y almacena el ARN en el ID de la variable de entorno.
Si la plantilla usa transformaciones, debe usar CAPABILITY_AUTO_EXPAND.
-
(Opcional) Para esperar a que el conjunto de cambios se cree correctamente, ejecute el comando change-set-create-complete:
aws cloudformation wait change-set-create-complete --change-set-name ${ID}
-
Utilice la consola de AWS CloudFormation para ver el conjunto de cambios. O bien, ejecute el comando describe-change-set:
aws cloudformation describe-change-set --change-set-name ${ID}
-
Para aplicar el conjunto de cambios e importar el recurso a la pila, ejecute el comando execute-change-set:
aws cloudformation execute-change-set --change-set-name ${ID}
-
(Opcional) Para comprobar que todas las propiedades de la plantilla coinciden con el recurso, utilice la detección de desviaciones en el recurso.
Información relacionada
Importar un recurso existente a una pila mediante la AWS CLI
Tipo de recurso compatible