Wie kann ich den Vorlagen-Debugging-Prozess beschleunigen oder stecke ich meine Fehler eine halbe Stunde nach ihrer Erstellung für immer fest?
Im Folgenden finden Sie einige Best-Practice-Vorschläge, die sich speziell auf die Verbesserung der Iterationsgeschwindigkeit komplexer CloudFormation-Vorlagenentwicklungen konzentrieren:
Verwenden Sie CloudFormation-Tools, um Vorlagen und Stapelaktualisierungen zu überprüfen
AWS hat diese bereits in einem eigenen Best Practices- Dokument beschrieben, daher werde ich sie nicht wiederholen:
Der Zweck dieses Schritts besteht darin, offensichtliche Syntax- oder logische Fehler zu erkennen, bevor tatsächlich eine Stapelerstellung / -aktualisierung durchgeführt wird.
Testressourcen isoliert
Bevor Sie eine einzelne CloudFormation-Ressource in einem komplexen Stapel verwenden, stellen Sie sicher, dass Sie das gesamte Ausmaß des Erstellungs- / Aktualisierungs- / Löschverhaltens dieser Ressource einschließlich etwaiger Nutzungsbeschränkungen und typischer Start- / Abbauzeiten genau kennen, indem Sie deren Verhalten in kleineren, eigenständigen Stapeln testen zuerst.
- Wenn Sie benutzerdefinierte Ressourcen von Drittanbietern entwickeln oder verwenden, schreiben Sie Komponententests mit geeigneten Bibliotheken für die Sprachplattform, um sicherzustellen, dass sich die Anwendungslogik in allen Anwendungsfällen wie erwartet verhält.
- Beachten Sie, dass die Zeit, die eine einzelne Ressource zum Erstellen / Aktualisieren / Löschen benötigt, je nach Verhalten der zugrunde liegenden API-Aufrufe zwischen den Ressourcentypen stark variieren kann. Beispielsweise
AWS::CloudFront::Distribution
kann das Erstellen / Aktualisieren / Löschen einer komplexen Ressource manchmal 30 bis 60 Minuten dauern , während eine AWS::EC2::SecurityGroup
Aktualisierung in Sekunden erfolgt.
- Einzelne Ressourcen können Fehler / Probleme / Einschränkungen in ihrer Implementierung aufweisen, die viel einfacher zu debuggen und Problemumgehungen zu entwickeln sind, wenn sie isoliert getestet werden, als in einem viel größeren Stapel. Beachten Sie Einschränkungen wie AWS- Servicelimits in Abhängigkeit von Ihren individuellen AWS-Kontoeinstellungen oder die Verfügbarkeit von Diensten in der Region in Abhängigkeit von der Region, in der Sie Ihren Stack erstellen.
Erstellen Sie komplizierte Stapel in kleinen Schritten
Wenn Sie eine Stapelerstellung / -aktualisierung durchführen, führt ein Fehler in einer einzelnen Ressource dazu, dass der Stapel den gesamten Satz von Ressourcenänderungen zurücksetzt. Dies kann andere erfolgreich erstellte Ressourcen unnötig zerstören und beim Erstellen eines komplizierten Stapels mit einer langen Ressource sehr lange dauern Abhängigkeitsdiagramm der zugehörigen Ressourcen.
Die Lösung hierfür besteht darin, Ihren Stapel schrittweise in kleineren Update-Stapeln zu erstellen und jeweils eine (oder mehrere) Ressourcen hinzuzufügen. Auf diese Weise führt das Rollback bei einem Fehler bei der Erstellung / Aktualisierung von Ressourcen nicht dazu, dass die Ressourcen Ihres gesamten Stacks zerstört werden, sondern nur die Ressourcen, die im letzten Update geändert wurden.
Überwachen Sie den Fortschritt der Stapelaktualisierungen
Stellen Sie sicher, dass Sie den Fortschritt Ihrer Stapelaktualisierung überwachen, indem Sie die Ereignisse des Stapels anzeigen, während eine Erstellung / Aktualisierung durchgeführt wird. Dies ist der Ausgangspunkt für das Debuggen weiterer Probleme mit einzelnen Ressourcen.