Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie behebe ich den Fehler „This template does not include any resources to import“ in AWS CloudFormation?

Lesedauer: 3 Minute
0

Ich erhalte die folgende Fehlermeldung in der AWS-CloudFormation-Konsole: „This template does not include any resources to import. Learn more.“

Kurzbeschreibung

Sie erhalten diesen Fehler, wenn Sie die CloudFormation-Konsole verwenden, um Ressourcen in einen vorhandenen Stack zu importieren, der außerhalb von CloudFormation erstellt wurde.

Dieser Fehler kann auftreten, wenn Sie die CloudFormation-Konsole in den folgenden Szenarien verwenden:

  • Die Ressource, die Sie importieren, hat einen Bedingungsschlüssel, der mit einer Bedingung verknüpft ist, die als false ausgewertet wird.
  • Sie verwenden die intrinsische Funktion Fn::Transform oder den Transformationsabschnitt der Vorlage für Transformationen wie AWS::Serverless oder AWS::Include, wenn Sie eine Ressource importieren.

Um den Fehler für bedingte Ressourcen zu beheben, muss die im Bedingungsschlüssel angegebene Bedingung für die Ressource, die Sie importieren, als true ausgewertet werden.

Um diesen Fehler für Vorlagen zu beheben, die Transformationen verwenden, nutzen Sie AWS Command Line Interface (AWS CLI) anstelle der AWS-CloudFormation-Konsole.

AWS CLI verlangt, dass Sie importierte Ressourcen explizit mit dem CloudFormation-Befehl create-change-set bereitstellen.

**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Behebung

Im folgenden Beispiel wird AWS CLI verwendet, um eine vorhandene AWS::ECS::Cluster-Ressource in einen CloudFormation-Stack zu importieren:

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

Hinweis: Bevor Sie mit den nächsten Schritten fortfahren, stellen Sie sicher, dass die Bedingung MyCondition als true ausgewertet wird.

Importieren von Ressourcen

Hinweis: Wenn sich Ihr Stack nicht in Ihrer standardmäßigen AWS-Region befindet, fügen Sie**--region** zu Ihren Befehlen hinzu. Oder legen Sie die Umgebungsvariable AWS_DEFAULT_REGION fest und exportieren Sie sie, um die Standardregion zu ändern.

Gehen Sie wie folgt vor, um die Ressourcen zu importieren:

  1. Erstellen Sie eine Ressourcenimportdatei mit dem Namen import.txt:

    [
        {
            "ResourceType": "AWS::ECS::Cluster",
            "LogicalResourceId":
                "ECSCluster2"
            ,
            "ResourceIdentifier": {
                "ClusterName":"Cluster2"
            }
        }
    ]
  2. Führen Sie den Befehl create-change-set aus, um einen Änderungssatz für Ihren Stack zu erstellen:

    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)

    Hinweis: Ersetzen Sie testStack durch Ihren Stacknamen und template.yaml durch den Namen Ihrer CloudFormation-Vorlagendatei. Der obige Befehl gibt den Amazon-Ressourcennamen (ARN) des Änderungssatzes zurück und speichert den ARN in der Umgebungsvariablen ID.

    Wenn Ihre Vorlage Transformationen verwendet, müssen Sie CAPABILITY_AUTO_EXPAND verwenden.

  3. (Optional) Um zu warten, bis der Änderungssatz erfolgreich erstellt wurde, führen Sie den Befehl change-set-create-complete aus:

    aws cloudformation wait change-set-create-complete --change-set-name ${ID}
  4. Zeigen Sie den Änderungssatz mithilfe der AWS-CloudFormation-Konsole an. Oder führen Sie den Befehl describe-change-set aus:

    aws cloudformation describe-change-set --change-set-name ${ID}
  5. Führen Sie den Befehl execute-change-set aus, um den Änderungssatz anzuwenden und Ihre Ressource in den Stack zu importieren:

    aws cloudformation execute-change-set --change-set-name ${ID}
  6. (Optional) Um zu überprüfen, ob alle Eigenschaften in Ihrer Vorlage mit Ihrer Ressource übereinstimmen, verwenden Sie die Abweichungserkennung für die Ressource.

Verwandte Informationen

Import an existing resource into a stack using the AWS CLI

Resources type support

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten