¿Cómo puedo resolver el error «Esta plantilla no incluye ningún recurso para importar» en AWS CloudFormation?

4 minutos de lectura
0

Recibo el siguiente error en la consola de AWS CloudFormation: «Esta plantilla no incluye ningún recurso para importar. Obtenga más información».

Descripción breve

Recibe este error cuando utiliza la consola de AWS CloudFormation para importar recursos a una pila existente que se ha creado fuera de CloudFormation.

Este error puede producirse al utilizar la consola de AWS CloudFormation en cualquiera de las siguientes situaciones:

  • Recursos condicionales. El recurso que está importando tiene una clave de condición asociada a una condición que se evalúa como falsa.
  • Plantillas de AWS Serverless Application Model (AWS SAM). La consola de AWS CloudFormation no admite la sección Transformaciones al importar recursos. No puede importar un recurso con una plantilla que utilice la transformación AWS::Serverless.
  • Fn::Transform. La consola de AWS CloudFormation no admite el uso de la función intrínseca Fn::Transform al importar recursos.

Puede utilizar la Interfaz de la línea de comandos de AWS (AWS CLI) en lugar de la consola de AWS CloudFormation para resolver este error en las plantillas mediante:

  • AWS SAM
  • Fn::Transform

Para resolver este error en el caso de los recursos condicionales, asegúrese de que la condición especificada en la clave de condición se evalúe como verdadera para el recurso que se está importando.

La AWS CLI requiere que proporcione explícitamente los recursos importados mediante el comandocreate-change-set de CloudFormation.

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI,asegúrese de utilizar la versión más reciente de la AWS CLI.

Resolución

En el siguiente ejemplo, la AWS CLI se utiliza 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ónMyCondition se evalúe como verdadera.

Para importar el recurso mediante la AWS CLI, siga estos pasos:

Nota: Si su pila no está en la región de AWS predeterminada, añada --region a sus comandos o cambie la región predeterminada. Para ello, configure y exporte la variable de entorno AWS_DEFAULT_REGION.

1.    Cree un archivo de importación de recursos denominado import.txt. Por ejemplo:

[
    {
        "ResourceType": "AWS::ECS::Cluster",
        "LogicalResourceId":
            "ECSCluster2"
        ,
        "ResourceIdentifier": {
            "ClusterName":"Cluster2"
        }
    }
]

2.    Para crear un conjunto de cambios en su pila, ejecute el siguiente 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.

Nota: Debe usar CAPABILITY_AUTO_EXPAND solo si la plantilla usa transformaciones.

3.    (Opcional) Para esperar a que el conjunto de cambios se cree correctamente, ejecute el siguiente comando:

aws cloudformation wait change-set-create-complete --change-set-name ${ID}

4.    Consulte el conjunto de cambios mediante la consola de AWS CloudFormation. O bien, utilice el siguiente comando describe-change-set:

aws cloudformation describe-change-set --change-set-name ${ID}

5.    Para aplicar el conjunto de cambios e importar el recurso a la pila, ejecute el siguiente comando:

aws cloudformation execute-change-set --change-set-name ${ID}

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

Recursos que admiten operaciones de detección de desviaciones e importaciones

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años