Blog

Erster Blick auf AWS CloudFormation Guard 2.0

Steyn Huizinga

Aktualisiert Oktober 20, 2025
3 Minuten

Am 17. Mai wurde AWS CloudFormation Guard Version 2.0 eingeführt. CloudFormation Guard ist ein Open Source-Tool, mit dem Sie CloudFormation-Vorlagen anhand bestimmter Regeln validieren können. Sie können es für das Linting Ihrer Vorlagen sowohl hinsichtlich der Syntax als auch der Semantik verwenden. Linting-Tools sind in CI/CD-Pipelines unerlässlich und eine leistungsstarke Ergänzung, wenn es um die Validierung strukturierter und von Menschen lesbarer Dateien wie JSON und YAML geht. In Ihren Bereitstellungspipelines führen Sie Linting-Tests vorzugsweise so früh wie möglich durch, bevor Sie mit Schritten wie Kompilieren und Bereitstellen etc. fortfahren (Fail-Fast).

Wenn Sie ein wenig herauszoomen und den gesamten Governance-Prozess betrachten, können Sie mit Linting-Tools große Schritte in Richtung Linksverschiebung machen. Das bedeutet, dass Sie Ihre Erkenntnisse so früh wie möglich in der Entwicklungsphase melden wollen. In diesem Fall sollten die Linting-Tests so schnell wie möglich durchgeführt werden. Sie möchten Ihre Anforderungen durchsetzen, bevor die eigentliche Bereitstellung erfolgt.

Linting-Tests können eine große Anzahl von Validierungsschritten umfassen. Die naheliegendsten sind sicherheitsrelevant, z.B. um Verschlüsselung und automatisches Patching zu erzwingen. Aber Sie können auch an die Durchsetzung von Best Practices denken, wie z.B. die obligatorische Kennzeichnung. Und nicht zuletzt können Sie auch unternehmensspezifische Anforderungen wie Namenskonventionen einbeziehen.

Wie üblich stellt AWS nicht ein einziges Tool für einen einzigen Zweck zur Verfügung. Für das Linting von CloudFormation ist ein anderes, vielleicht bekannteres Tool CloudFormation Linter (cfn-lint). Es gibt eine Menge Überschneidungen zwischen den beiden Tools, aber auch einige deutliche Unterschiede. Ich glaube, die größten Unterschiede sind, dass cfn-lint ausschließlich zum Linting von CloudFormation-Vorlagen verwendet werden kann, während cfn-guard zum Linting jeder JSON- oder YAML-Datei verwendet werden kann. Mit cfn-guard können Sie potenziell Helm Charts (Kubernetes-Container-Definitionen) oder vielleicht sogar Terraform JSON-Dateien validieren. Ein weiterer bemerkenswerter Unterschied ist, dass cfn-guard nicht mit vorgefertigten Regeln geliefert wird, während cfn-lint ziemlich gut von der Stange verwendbar ist.

Betrachtet man die Reifegrade: Ich finde das Unit-Testing-Framework in cfn-guard ziemlich wertvoll. Nichts ist so ärgerlich wie Linting-Regeln, die zu falsch-positiven Ergebnissen oder unvorhersehbarem Verhalten führen. Auch die Tatsache, dass Sie Regeln gruppieren können. Das kann zum Beispiel dabei helfen, zwischen Sicherheits- und Best-Practices-Regeln zu unterscheiden. Das Schreiben und Verwenden von Unit-Tests kann wirklich dazu beitragen, dass Ihre Benutzer eine konsistente Erfahrung machen.

Was ich ein wenig ungeschickt finde, ist, dass das Tool selbst in Rust geschrieben ist. Wenn Sie ein Tool als OpenSource bereitstellen und es der Community zur Verfügung stellen, wäre es logisch, eine gängige Sprache wie Python oder JavaScript zu verwenden, so dass eine große Gruppe von Entwicklern dazu beitragen kann. Auch viele andere AWS-Projekte/Tools sind in Python oder JavaScript (oder sogar Go) geschrieben.

Schließlich finden Sie in meinem GitHub Repo einige Beispiele für die Verwendung von cfn-guard in einem Docker-Container. Es enthält auch eine Beispielregel und einen Unit-Test.

Verfasst von

Steyn Huizinga

As a cloud evangelist at Oblivion, my passion is to share knowledge and enable, embrace and accelerate the adoption of public cloud. In my personal life I’m a dad and a horrible sim racer.

Contact

Let’s discuss how we can support your journey.