Endlich! AWS CloudFormation lernt ForEach

Don't Repeat Yourself - Dieses Pattern ist Best Practice für jegliche Art von Programmierung. Hierdurch kannst du menschliche Fehler reduzieren und deinen Code schlank und verständlich gestalten.

Terraform Benutzer kennen Konstrukte wie count oder for_each schon eine ganze Weile. Doch CloudFormation hinkt hier etwas hinterher.

Nun hat AWS aber, auf Wunsch der Community, nachgebessert.

Inhaltsverzeichnis

Die neue Fn::ForEach Funktion kannst du durch eine Spracherweiterung nutzen. Ich persönlich bevorzuge das YAML-Format für CloudFormation Templates, daher sind die nachfolgenden Beispiele entsprechend formatiert.

Die ForEach-Funktion kannst du in der Resources, Condition und Outputs Sektion verwenden.

Wenn du also beispielsweise für dein Monitoring System SNS-Topics für deine Alarme aus verschiedenen Umgebungen erstellen, kannst du das in Zukunft wie folgt machen.

				
					AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::LanguageExtensions'
Resources:
  'Fn::ForEach::CWAlarmSNSTopics':
    - Environment
    - - Development
      - Test
      - Production
    - 'SnsTopicAlarm${Environment}':
        Type: 'AWS::SNS::Topic'
        Properties:
          TopicName: !Ref Environment

				
			

Zeile 2 führt eine Transformation durch. Diese liest das Template ein, wandelt gewisse Sprachkonstrukte um und resultiert in einem Template, welches nativen CloudFormation Code enthält. In diesem Fall wird hierdurch das Tempalte eingelesen und das Sprachkonstrukt für Fn::ForEach in Einzelressourcen umgewandelt.

Zeile 4 enthält das ForEach-Konstrukt und einen Identifikationsschlüssel. Dieser muss eindeutig sein. In diesem Fall ist es CWAlarmSNSTopics.

In Zeile 5 ist der Name der Variablen, welche in der ForEach Schleife genutzt wird, definiert.

Zeile 6-8 ist eine Liste von Werten, die der Variablen zugeordnet werden.

Zeile 9 ist ein Ressourcenidentifikator, wie du ihn bestimmt schon in normalen CloudFormation Templates gesehen hast. Die Besonderheit hieran ist, dass die Variable aus Zeile 5 verwendet wird.

Die weiteren Zeilen definieren ein SNS-Topic. Dies ist nun wieder altbekannter CloudFormation Code.

Das Resultat beim Ausführen dieses Templates sind drei Ressourcen:

				
					{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "SnsTopicAlarmDevelopment": {
            "Type": "AWS::SNS::Topic",
            "Properties": {
                "TopicName": "Development"
            }
        },
        "SnsTopicAlarmTest": {
            "Type": "AWS::SNS::Topic",
            "Properties": {
                "TopicName": "Test"
            }
        },
        "SnsTopicAlarmProduction": {
            "Type": "AWS::SNS::Topic",
            "Properties": {
                "TopicName": "Production"
            }
        }
    }
}
				
			

Wie du sehen kannst, lässt sich hierdurch Code Duplizierung vermeiden.

Mehr Informationen findest du in der offiziellen Dokumentation.

Egal wie ausgereift deine Cloud-Infrastruktur und dein Wissen ist, so können wir dich unterstützen:

Du bist gerade noch am Anfang deiner Cloud-Reise und möchtest dich erst einmal informieren? Dann schau unbedingt in unserem Wissenszentrum vorbei!

Du möchtest wissen, wie wir dich konkret weiterbringen können? Dann empfehlen ich dir einen Blick auf unsere Dienstleistungen!

Du möchtest mit uns Kontakt aufnehmen und unsere Einschätzung zu deiner Cloud-Infrastruktur haben? Verlier keine Zeit und buche jetzt deinen Termin für ein Erstgespräch – kostenlos und ohne Kleingedrucktes.

Picture of Hendric Jabs
Hendric Jabs
Ich bin Wirtschaftsinformatiker (M. Sc.) und AWS Cloud Solutions Architect. Seit 2014 beschäftige ich mich leidenschaftlich mit Amazon Web Services und habe bereits seit 2015 einer Vielzahl von Kunden zu einer erfolgreichen Cloud Nutzung verholfen. Im Jahr 2021 habe ich für das Digital Career Institute den ersten AWS re/Start Kurs in Deutschland als leitender Dozent durchgeführt.

Verwandte Beiträge

Was ist die 7R-Klassifizierung?

Wenn man sich mit dem Thema Cloud-Migration beschäftigt, stößt man unweigerlich auf die sogenannten „7R’s“. Dieser Beitrag lüftet das Geheimnis hinter dieser hilfreichen Klassifizierung.

Weiterlesen