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
-
Öffnen Sie die Seite IaC-Generator
der CloudFormation-Konsole. -
Wählen Sie in der Navigationsleiste am oberen Rand des Bildschirms das AWS-Region, das die gescannten Ressourcen enthält.
-
Wählen Sie im Bereich Vorlagen die Option Vorlage erstellen.
-
Wählen Sie Von einer neuen Vorlage beginnen.
-
Geben Sie für Vorlagennameeinen Namen für Ihre Vorlage ein.
-
(Optional) Konfigurieren Sie Ihre Löschrichtlinie und Update-Ersatzrichtlinie.
-
Wählen Sie Weiter um gescannte Ressourcen zur Vorlage hinzuzufügen.
-
-
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.
-
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.
-
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.
-
Sehen Sie sich die Details der Vorlage, die gescannten Ressourcen und die verwandten Ressourcen an.
-
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
-
Verwenden Sie den Befehl list-resource-scan-resources, um die bei der Überprüfung gefundenen Ressourcen aufzulisten, und geben Sie optional die Option
--resource-identifieran, um die Ausgabe zu begrenzen. Ersetzen Sie bei der Option--resource-scan-iddie Beispiel-ARN durch die tatsächliche ARN.aws cloudformation list-resource-scan-resources \ --resource-scan-idarn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60\ --resource-identifierMyAppIm Folgenden finden Sie eine Beispielantwort, wobei
ManagedByStackangibt, 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.
-
Verwenden Sie den Befehl
cat, um die Ressourcentypen und Bezeichner in einer JSON-Datei namensresources.jsonin 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" } } ] -
Verwenden Sie den Befehl list-resource-scan-related-resources zusammen mit der von Ihnen erstellten
resources.jsonDatei, um die Ressourcen aufzulisten, die mit Ihren gescannten Ressourcen zusammenhängen.aws cloudformation list-resource-scan-related-resources \ --resource-scan-idarn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60\ --resourcesfile://resources.jsonIm Folgenden finden Sie eine Beispielantwort, wobei
ManagedByStackangibt, 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.
-
Verwenden Sie den Befehl create-generated-template um eine neue Stapelvorlage zu erstellen, wie folgt, mit diesen Änderungen:
-
Ersetzen Sie
durch das AWS-Region, das die gescannten Ressourcen enthält.us-east-1 -
Ersetzen Sie
durch den Namen der zu erstellenden Vorlage.MyTemplate
aws cloudformation create-generated-template --regionus-east-1\ --generated-template-nameMyTemplate\ --resourcesfile://resources.jsonIm 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" } -