Planen eines serverlosen Workflows

mit AWS Step Functions und Amazon CloudWatch

Die Automatisierung der Reaktion auf betriebliche Ereignisse für Ressourcen in Ihrem AWS-Konto kann dazu beitragen, den betrieblichen Aufwand Ihrer AWS Cloud-Infrastruktur zu reduzieren. Ein Beispiel aus der Praxis: Wenn Sie ein DevOps-Ingenieur oder IT-Manager sind, möchten Sie vielleicht ETL-Aufgaben, Datensynchronisation oder Sicherheit automatisieren.

Um diese Herausforderung zu lösen, können Sie einen Serverless-Workflow mit einem zeitbasierten Zeitplan ausführen. Amazon CloudWatch Events bietet einen nahezu in Echtzeit ablaufenden Strom von Systemereignissen, die die Änderungen und Benachrichtigungen für Ihre AWS-Ressourcen beschreiben. Aus diesem Datenstrom können Sie Regeln erstellen, um bestimmte Ereignisse an AWS Step Functions weiterzuleiten und einen Zustandsautomaten zur weiteren Verarbeitung aufzurufen. Mit den AWS Step Functions können Sie mehrere Dienste zu serverlosen Workflows koordinieren, so dass Sie automatisierte Prozesse schnell aufbauen und aktualisieren können.

In diesem Tutorial verwenden Sie Step Functions, um einen serverlosen Workflow als Reaktion auf ein CloudWatch Event zu orchestrieren. Zuerst werden Sie einen sehr einfachen Zustandsautomaten mit AWS Step Functions erstellen. Dann verwenden Sie Amazon CloudWatch Events, um eine Regel einzurichten, die Ihren Zustandsautomaten jede Minute laufen lässt. Während dieses Tutorial einen zeitbasierten Workflow aufruft, kann es verallgemeinert werden, um es mit anderen ereigniserzeugenden AWS-Services zu integrieren.

In diesem Tutorial verwenden Sie AWS Step Functions und Amazon CloudWatch. Beide Services sind im kostenlosen Kontingent für AWS enthalten.

Für dieses Tutorial ist ein AWS-Konto erforderlich

Für Step Functions oder CloudWatch fallen keine zusätzlichen Kosten an. Die in diesem Tutorial erstellten Ressourcen können im Rahmen des kostenlosen Kontingents genutzt werden. 

Weitere Informationen zum kostenlosen Kontingent >>


Schritt 1: Erstellen einer AWS Identity and Access Management (IAM)-Rolle

AWS Step Functions kann Code ausführen und auf andere AWS-Ressourcen zugreifen (z. B. Daten, die in Amazon S3-Buckets gespeichert sind). Um die Sicherheit zu gewährleisten, müssen Sie Step Functions mithilfe von AWS Identity and Access Management (IAM) Zugriff auf diese Ressourcen gewähren.


a. Öffnen Sie die AWS-Managementkonsole in einem anderen Browserfenster, so dass Sie diese Schritt-für-Schritt-Anleitung offen halten können. Wenn der Bildschirm vollständig geladen ist, geben Sie Ihren Benutzernamen und das Passwort ein, um zu beginnen. Geben Sie dann IAM in die Suchleiste ein und wählen Sie IAM aus, um die Servicekonsole zu öffnen.

01a

(zum Vergrößern klicken)


b.  Klicken Sie auf Rollen und wählen Sie anschließend Rolle erstellen.

01b

(zum Vergrößern klicken)


c. Wählen Sie auf der Seite Typ der vertrauenswürdigen Entität auswählen unter AWS-Service die Option Step Functions aus der Liste aus und wählen Sie anschließend Weiter: Berechtigungen.

01c

(zum Vergrößern klicken)


d. Wählen Sie auf der Seite Berechtigungsrichtlinie anhängen die Option Weiter: Prüfen.

01d

(zum Vergrößern klicken)


e. Geben Sie auf der Seite Review step_functions_basic_execution als Rollennamen ein und klicken Sie auf Rolle erstellen.

01e

(zum Vergrößern klicken)


f. Ihre neue IAM-Rolle wurde erstellt.

01f

(zum Vergrößern klicken)


Schritt 2: Erstellen eines Zustandsautomaten für AWS Step Functions

In diesem Schritt erstellen Sie einen einfachen, unabhängig laufenden Zustandsautomat unter Verwendung eines Pass-Status. Ein Pass-Status gibt einfach seine Eingabe an seine Ausgabe weiter und führt eigentlich keine Arbeit aus.

In einem realen Szenario kann Ihr serverloser Workflow alles tun, was Sie benötigen. Sie könnten mehrere Lambda-Funktionen koordinieren, um Aufgaben auszuführen, Entscheidungen zu treffen und so weiter. Für dieses Tutorial werden wir den Arbeitsablauf jedoch einfach halten.


a. Öffnen Sie die AWS Step Functions-Konsole. Step Functions bietet verschiedene vordefinierte Zustandsautomaten als Vorlagen an. Für dieses Tutorial erstellen Sie einen Zustandsautomaten unter Verwendung der Hello World-Vorlage. Wählen Sie auf der Seite Zustandsautomaten erstellen die Option Vorlagen und wählen Sie dann Hello World.

02c

(zum Vergrößern klicken)


b. Geben Sie im Abschnitt Details den Namen Ihres Zustandsautomaten als ScheduledWorkflow ein, und wählen Sie dann unter IAM-Rolle die Option Ich werde eine vorhandene Rolle verwenden. Wählen Sie unter Vorhandene IAM-Rollen die von Ihnen angelegte IAM-Rolle step_functions_basic_execution aus.

02d

(zum Vergrößern klicken)


c. Step Functions füllt den Namen des Zustandsautomaten automatisch aus. Es füllt auch das Fenster Definition des Zustandsautomaten mit der Beschreibung des Zustandsautomaten in der Amazon-States-Sprache aus. Weitere Informationen über die Definition von Zustandsautomaten finden Sie unter Zustandsautomatenstruktur.

Lassen Sie uns einige einfache Modifikationen an Ihrem Zustandsautomaten vornehmen:

Ersetzen Sie in Zeile 2 und Zeile 5 "HelloWorld" durch "Do Something".
Auf Zeile 7 ersetzen Sie "Hello World!" durch "Arbeit abgeschlossen!".

Klicken Sie dann auf die Aktualisierungsschaltfläche neben Ihrem visuellen Arbeitsablauf, um das Zustandsdiagramm zu aktualisieren, damit es Ihre Änderungen widerspiegelt.

02e

(zum Vergrößern klicken)


d. Wählen Sie Zustandsautomat erstellen. Ihr Zustandsautomat ist nun bereit, ausgeführt zu werden.

02f

(zum Vergrößern klicken)


Schritt 3: Erstellen einer Amazon CloudWatch Events-Regel

Nun, da Sie Ihren Zustandsautomaten erstellt haben, können Sie eine Amazon CloudWatch Events-Regel erstellen, die Ihren Zustandsautomaten nach einem Zeitplan ausführt. Amazon CloudWatch Events liefert nahezu einen Echtzeit-Stream von Systemereignissen, die Änderungen in Amazon Web Services-Ressourcen (AWS) beschreiben. Mit einfachen Regeln, die Sie schnell aufstellen können, können Sie Ereignisse zuordnen und an eine oder mehrere Zielfunktionen oder Streams weiterleiten.


a. Öffnen Sie eine weitere Browser-Registerkarte. Navigieren Sie zur CloudWatch-Ereignis-Konsole, indem Sie CloudWatch in die Suchleiste eingeben.

03a

(zum Vergrößern klicken)


b. Wählen Sie Ereignisse und dann Regel erstellen.  

03b

(zum Vergrößern klicken)


c. Die Seite Schritt 1: Regel erstellen wird angezeigt. Wählen Sie im Abschnitt Ereignisquelle die Option Zeitplan. Geben Sie in Feste Rate von 1 ein und lassen Sie die Einheit "Minuten" ausgewählt.

03c

(zum Vergrößern klicken)


d. Wählen Sie im Abschnitt Ziele die Option Ziel hinzufügen. Wählen Sie aus der Liste Step Functions-Zustandsautomaten und wählen Sie Ihren ScheduledWorkflow-Zustandsautomaten.

Wählen Sie Eingabe konfigurieren und wählen Sie Übereinstimmendes Ereignis. Dadurch werden die Details des CloudWatch-Ereignisses jedes Mal, wenn es eine Instance Ihres Zustandsautomaten ausführt, als Eingabe an Step Functions übergeben.

Wählen Sie Neue Rolle für diese spezifische Ressource erstellen und klicken Sie dann auf Details konfigurieren.

03d

(zum Vergrößern klicken)


e. Die Seite Schritt 2: Regeldetails konfigurieren wird angezeigt. Geben Sie execute_state_machine als Namen für Ihre Regel ein, lassen Sie Aktiviert für Zustand angekreuzt und wählen Sie dann Regel erstellen.

Die Regel wird erstellt und die Seite Regeln wird angezeigt, auf der alle Ihre Regeln für CloudWatch-Ereignisse aufgelistet sind.

Eine neue Ausführung Ihres Zustandsautomaten wird nun jede Minute ausgeführt.

03e

(zum Vergrößern klicken)


Schritt 4: Passen Sie an, wie Ihr Zustandsautomat die Ein- und Ausgabe verarbeitet

Als Nächstes passen Sie an, wie Ihr Zustandsautomat die Ein- und Ausgabe verarbeitet. Zu verstehen, wie Informationen von Zustand zu Zustand fließen, und zu lernen, wie diese Daten gefiltert und manipuliert werden können, wird Ihnen helfen, Arbeitsabläufe in AWS Step Functions effektiv zu entwerfen und zu implementieren.


a. In der Step Functions-Konsole sollte Ihr ScheduledWorkflow-Zustandsautomat immer noch angezeigt werden. Klicken Sie auf Bearbeiten.

04a

(zum Vergrößern klicken)


b. Beziehen Sie sich im Fenster Definition des Zustandsautomaten auf Zeile 7 Ihres Zustandsautomaten. Das Feld Ergebnis im Zustand Pass gibt die Ausgabe an, die an den nächsten Zustand weitergegeben werden soll. Da Ihr Zustandsautomat nur einen Zustand hat, wird die Meldung "Arbeit abgeschlossen!" an den Endzustand Ihres Workflows weitergeleitet.

Sie erinnern sich vielleicht daran, dass ein Zustand "Step Functions Pass" einfach seine Eingabe an seine Ausgabe weitergibt. Sie können das Feld ResultPath verwenden, um die Ausgabe eines Zustands zu ändern. Sie können z. B. die Zustandseingabe durch das Ergebnis ersetzen, das sie erzeugt (z. B. die Ausgabe der Lambda-Funktion eines Task-Zustands).

Um die Eingabe des Zustands mit seinem Ergebnis zu kombinieren, fügen Sie nach Zeile 7 eine neue Zeile ein und tippen Sie:

"ResultPath": "$.taskresult",

Dadurch werden die Details des CloudWatch-Ereignisses, das die Ausführung des Zustandsautomaten aufgerufen hat, mit der Ausgabe des Zustands "Pass", in diesem Fall "Arbeit abgeschlossen!". Weitere Informationen finden Sie unter Ein- und Ausgabeverarbeitung in Step Functions.

04b

(zum Vergrößern klicken)


c. Klicken Sie auf Speichern.

04c

(zum Vergrößern klicken)


Schritt 5. Bestätigen Sie, dass Ihr Workflow wie erwartet funktioniert

Jetzt, da Sie Ihre CloudWatch Events-Regel aktiviert haben, löst CloudWatch jede Minute eine Ausführung Ihres Zustandsautomaten-Workflows aus. In diesem Schritt werden Sie diese Ausführungen beobachten und überprüfen, ob die Details des CloudWatch-Ereignisses durch Step Functions erfasst werden.


a. In der Step Functions-Konsole klicken Sie auf ScheduledWorkflow im Breadcrumb oben auf der Seite.

05a

(zum Vergrößern klicken)


b. Unter Ausführungen können Sie die Ausführungen beobachten, die durch CloudWatch Events ausgelöst werden. Sie können auf die Schaltfläche Aktualisierungen klicken, um das Fenster zu aktualisieren und zu beobachten, wie neue Ausführungen Ihres Zustandsautomaten erscheinen. Warten Sie ein paar Minuten, damit mindestens zwei Instances Ihres Workflows ausgelöst werden können.

05b

(zum Vergrößern klicken)


c. Klicken Sie mit der rechten Maustaste auf eine der Ausführungen und öffnen Sie den Link in einem neuen Browser-Tab. Wiederholen Sie diesen Vorgang für eine andere Ausführung Ihres Zustandsautomaten.

Klicken Sie auf jeder Registerkarte auf den Status "Etwas tun" im visuellen Workflow-Fensterbereich, um den Schrittdetailbereich auf der rechten Seite aufzufüllen.

Wenn Sie auf Eingabe klicken, können Sie die Details des übereinstimmenden Ereignisses von CloudWatch sehen. Beachten Sie die Unterschiede bei den Ereignissen, wie z. B. die Felder "ID" und "Zeit".

05c

(zum Vergrößern klicken)


d. Erweitern Sie auf jeder Registerkarte die Option Ausgabe im Schrittdetailbereich. Sie können sehen, dass die Eingabe mit der Ausgabe des "Etwas tun"-Zustands kombiniert wurde.

05d

(zum Vergrößern klicken)


Schritt 6. Beenden Ihrer Ressourcen

In diesem Schritt beenden Sie Ihre AWS Step Functions und Amazon CloudWatch-Ressourcen.

Wichtig: Die Beendigung von Ressourcen, die nicht aktiv genutzt werden, senkt die Kosten und ist eine bewährte Methode. Wenn Sie Ihre Ressourcen nicht beenden, können Gebühren anfallen.


a. Schließen Sie die Registerkarten für Ihre individuellen Zustandsautomaten-Ausführungen. Klicken Sie oben im Fenster Step Functions auf Zustandsautomaten.

06a

(zum Vergrößern klicken)


b. Klicken Sie im Fenster Zustandsautomaten auf den Zustandsautomaten, den Sie für dieses Tutorial erstellt haben, und wählen Sie Löschen. Bestätigen Sie die Aktion, indem Sie im Dialogfeld Zustandsautomat löschen wählen. Ihr Zustandsautomat wird in ein oder zwei Minuten gelöscht, nachdem Step Functions bestätigt hat, dass alle prozessinternen Ausführungen abgeschlossen sind.

06b

(zum Vergrößern klicken)


c. Als Nächstes löschen Sie Ihre Amazon CloudWatch Events-Regel. Klicken Sie in der CloudWatch-Konsole auf Aktionen und dann auf Löschen. Bestätigen Sie den Löschvorgang, indem Sie erneut auf Löschen klicken.

06c

(zum Vergrößern klicken)


d. Klicken Sie auf Services und geben Sie dann IAM in die Suchleiste ein, um zur IAM-Konsole zu navigieren.

06d

(zum Vergrößern klicken)


e. Klicken Sie auf Rollen

06e

(zum Vergrößern klicken)


f. Wählen Sie die beiden IAM-Rollen aus, die Sie für dieses Tutorial erstellt haben, und klicken Sie dann Delete role (Rolle löschen). Bestätigen Sie das Löschen, indem Sie im Dialogfeld auf Yes, Delete (Ja, löschen) klicken.

Sie können sich nun von der AWS-Managementkonsole abmelden.

06f

(zum Vergrößern klicken)


Herzlichen Glückwunsch!

Sie haben erfolgreich einen Serverless-Workflow geplant, der jede Minute ausgeführt werden soll.
Mit den AWS Step Functions können Sie die Ausführung wiederkehrender Aufgaben inspizieren und prüfen, um zu bestätigen, dass sie konsistent ausgeführt werden. Durch die Kombination von AWS Step Functions mit Amazon CloudWatch Events können Sie tägliche, wöchentliche und monatliche Aufgaben automatisieren oder die Ausführung Ihres Step Functions Workflows auslösen, wenn bestimmte Bedingungen erfüllt sind.