Come posso risolvere l'errore "Questo modello non include alcuna risorsa da importare" in AWS CloudFormation?

3 minuti di lettura
0

Ricevo il seguente errore nella console AWS CloudFormation: "Questo modello non include alcuna risorsa da importare. Scopri di più."

Breve descrizione

Visualizzi questo errore quando utilizzi la console di AWS CloudFormation per importare risorse in uno stack esistente creato all'esterno di CloudFormation.

Questo errore può verificarsi quando utilizzi la console AWS CloudFormation in scenari con una delle seguenti caratteristiche:

  • Risorse condizionali. La risorsa che stai importando ha una chiave di condizione associata a una condizione che è falsa.
  • Modelli di applicazione serverless AWS (AWS SAM). La console AWS CloudFormation non supporta la sezione Trasformazioni durante l'importazione di risorse. Non puoi importare una risorsa con un modello che utilizza la trasformazione AWS::Serverless.
  • Fn::Transform. La console AWS CloudFormation non supporta l'uso della funzione intrinseca Fn::Transform durante l'importazione di risorse.

Puoi utilizzare l'interfaccia della linea di comando AWS (AWS CLI) anziché la console AWS CloudFormation per risolvere questo errore per i modelli che utilizzano:

  • AWS SAM
  • Fn::Trasform

Per risolvere questo errore per le risorse condizionali, assicurati che la condizione specificata nella chiave della condizione sia vera per la risorsa da importare.

L'interfaccia della linea di comando AWS richiede di fornire esplicitamente risorse importate utilizzando il comando CloudFormation, create-change-set.

Nota: In caso di errori durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Soluzione

Nell'esempio seguente, AWS CLI viene utilizzata per importare una risorsa AWS::ECS::Cluster esistente in uno stack CloudFormation:

Resources:
  ...
  ECSCluster2:
    Condition: MyCondition
    Type: AWS::ECS::Cluster
    DeletionPolicy: Retain
    Properties:
      ClusterName: Cluster2

Nota: Prima di procedere con i passaggi successivi, assicurati che la condizione MyCondition sia vera.

Per importare la risorsa utilizzando AWS CLI, completa i seguenti passaggi:

Nota: Se il tuo stack non si trova nella tua regione AWS predefinita, aggiungi --region ai tuoi comandi o modifica la regione predefinita impostando ed esportando la variabile di ambiente AWS\ _DEFAULT\ _REGION.

1.    Crea un file di importazione delle risorse chiamato import.txt. Ad esempio:

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

2.    Per creare un set di modifiche rispetto al tuo stack, esegui il seguente 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: Sostituisci testStack con il nome del tuo stack e template.yaml con il nome del tuo file modello CloudFormation. Il comando precedente restituisce il nome della risorsa Amazon (ARN) del set di modifiche e memorizza l'ARN nell'ID della variabile di ambiente.

Nota: È necessario utilizzare CAPABILITY_AUTO_EXPAND solo se il modello utilizza trasformazioni.

3.    (Facoltativo) Per attendere che il set di modifiche venga creato correttamente, esegui il seguente comando:

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

4.    Visualizza il set di modifiche utilizzando la console AWS CloudFormation. Oppure, usa il seguente comando describe-change-set:

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

5.    Per applicare il set di modifiche e importare la risorsa nello stack, esegui il seguente comando:

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

6.    (Facoltativo) Per verificare che tutte le proprietà del modello corrispondano alla risorsa, utilizza il rilevamento delle deviazioni sulla risorsa.


Informazioni correlate

Importa una risorsa esistente in uno stack utilizzando l'interfaccia AWS CLI

Risorse che supportano le operazioni di importazione e rilevamento delle deviazioni

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa