Erstellen Sie eine CloudFormation-Vorlage aus mit dem IaC-Generator gescannten Ressourcen - AWS CloudFormation

Erstellen Sie eine CloudFormation-Vorlage aus mit dem IaC-Generator gescannten Ressourcen

In diesem Thema wird erklärt, wie Sie eine Vorlage aus Ressourcen erstellen, die mit dem IaC-Generatorfeature gescannt wurden.

Erstellen Sie eine Vorlage aus gescannten Ressourcen (Konsole)

So erstellen Sie eine Stapelvorlage aus gescannten Ressourcen
  1. Öffnen Sie die Seite IaC-Generator der CloudFormation-Konsole.

  2. Wählen Sie in der Navigationsleiste am oberen Rand des Bildschirms das AWS-Region, das die gescannten Ressourcen enthält.

  3. Wählen Sie im Bereich Vorlagen die Option Vorlage erstellen.

  4. Wählen Sie Von einer neuen Vorlage beginnen.

    1. Geben Sie für Vorlagennameeinen Namen für Ihre Vorlage ein.

    2. (Optional) Konfigurieren Sie Ihre Löschrichtlinie und Update-Ersatzrichtlinie.

    3. Wählen Sie Weiter um gescannte Ressourcen zur Vorlage hinzuzufügen.

  5. Unter Gescannte Ressourcen hinzufügendurchsuchen Sie die Liste der gescannten Ressourcen und wählen die Ressourcen aus, die Sie zu Ihrer Vorlage hinzufügen möchten. Sie können die Ressourcen nach Ressourcenbezeichner, Ressourcentyp oder Tags filtern. Die Filter schließen sich gegenseitig ein.

  6. Wenn Sie alle benötigten Ressourcen zu Ihrer Vorlage hinzugefügt haben, wählen Sie Weiter um die Seite Gescannte Ressourcen hinzufügen zu verlassen und zur Seite Verwandte Ressourcen hinzufügen zu gelangen.

  7. Sehen Sie sich eine empfohlene Liste mit verwandten Ressourcen an. Zusammenhängende Ressourcen, wie Amazon EC2-Instances und Sicherheitsgruppen, sind voneinander abhängig und gehören in der Regel zur gleichen Arbeitslast. Wählen Sie die zugehörigen Ressourcen aus, die Sie in die generierte Vorlage aufnehmen möchten.

    Anmerkung

    Wir schlagen vor, dass Sie alle zugehörigen Ressourcen zu dieser Vorlage hinzufügen.

  8. Sehen Sie sich die Details der Vorlage, die gescannten Ressourcen und die verwandten Ressourcen an.

  9. Wählen Sie Vorlage erstellen um die Seite Überprüfen und erstellen zu verlassen und die Vorlage zu erstellen.

Erstellen Sie eine Vorlage aus gescannten Ressourcen (AWS CLI)

So erstellen Sie eine Stapelvorlage aus gescannten Ressourcen
  1. Verwenden Sie den Befehl list-resource-scan-resources, um die bei der Überprüfung gefundenen Ressourcen aufzulisten, und geben Sie optional die Option --resource-identifier an, um die Ausgabe zu begrenzen. Ersetzen Sie bei der Option --resource-scan-id die Beispiel-ARN durch die tatsächliche ARN.

    aws cloudformation list-resource-scan-resources \ --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60 \ --resource-identifier MyApp

    Im Folgenden finden Sie eine Beispielantwort, wobei ManagedByStack angibt, ob CloudFormation die Ressource bereits verwaltet. Kopieren Sie die Ausgabe. Sie benötigen sie für den nächsten Schritt.

    { "Resources": [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" }, "ManagedByStack": false }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" }, "ManagedByStack": false } ] }

    Eine Beschreibung der Felder in der Ausgabe finden Sie unter ScannedResource in der AWS CloudFormation API-Referenz.

  2. Verwenden Sie den Befehl cat, um die Ressourcentypen und Bezeichner in einer JSON-Datei namens resources.json in Ihrem Home-Verzeichnis zu speichern. Im Folgenden finden Sie ein JSON-Beispiel, das auf der Beispielausgabe im vorherigen Schritt basiert.

    $ cat > resources.json [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } } ]
  3. Verwenden Sie den Befehl list-resource-scan-related-resources zusammen mit der von Ihnen erstellten resources.json Datei, um die Ressourcen aufzulisten, die mit Ihren gescannten Ressourcen zusammenhängen.

    aws cloudformation list-resource-scan-related-resources \ --resource-scan-id arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60 \ --resources file://resources.json

    Im Folgenden finden Sie eine Beispielantwort, wobei ManagedByStack angibt, ob CloudFormation die Ressource bereits verwaltet. Fügen Sie diese Ressourcen zu der JSON-Datei hinzu, die Sie im vorherigen Schritt erstellt haben. Sie benötigen sie, um Ihre Vorlage zu erstellen.

    { "RelatedResources": [ { "ResourceType": "AWS::EKS::Nodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" }, "ManagedByStack": false }, { "ResourceType": "AWS::IAM::Role", "ResourceIdentifier": { "RoleId": "arn:aws::iam::account-id:role/MyAppIAMRole" }, "ManagedByStack": false } ] }

    Eine Beschreibung der Felder in der Ausgabe finden Sie unter ScannedResource in der AWS CloudFormation API-Referenz.

    Anmerkung

    Die Eingabeliste der Ressourcen darf eine Länge von 100 nicht überschreiten. Um verwandte Ressourcen für mehr als 100 Ressourcen aufzulisten, führen Sie den Befehl list-resource-scan-related-resources in Stapeln von 100 Ressourcen aus und konsolidieren die Ergebnisse.

    Beachten Sie, dass die Ausgabe möglicherweise doppelte Ressourcen in der Liste enthält.

  4. Verwenden Sie den Befehl create-generated-template um eine neue Stapelvorlage zu erstellen, wie folgt, mit diesen Änderungen:

    • Ersetzen Sie us-east-1 durch das AWS-Region, das die gescannten Ressourcen enthält.

    • Ersetzen Sie MyTemplate durch den Namen der zu erstellenden Vorlage.

    aws cloudformation create-generated-template --region us-east-1 \ --generated-template-name MyTemplate \ --resources file://resources.json

    Im Folgenden sehen Sie ein Beispiel für eine resources.json-Datei.

    [ { "ResourceType": "AWS::EKS::Cluster", "LogicalResourceId":"MyCluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "LogicalResourceId":"MyASG", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } }, { "ResourceType": "AWS::EKS::Nodegroup", "LogicalResourceId":"MyNodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" } }, { "ResourceType": "AWS::IAM::Role", "LogicalResourceId":"MyRole", "ResourceIdentifier": { "RoleId": "arn:aws::iam::account-id:role/MyAppIAMRole" } } ]

    Bei Erfolg gibt dieser Befehl Folgendes zurück.

    { "Arn": "arn:aws:cloudformation:region:account-id:generatedtemplate/7fc8512c-d8cb-4e02-b266-d39c48344e48", "Name": "MyTemplate" }