Automatisieren der Bereitstellung von Step Functions Functions-Ereignissen mit EventBridge - AWS Step Functions

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatisieren der Bereitstellung von Step Functions Functions-Ereignissen mit EventBridge

Mit EventBridge können Sie Ereignisse aus den Standard-Workflows von Step Functions auswählen, um sie zur weiteren Verarbeitung an andere Dienste zu senden. Diese Technik bietet eine flexible Möglichkeit, Komponenten lose miteinander zu verbinden und Ihre Ressourcen zu überwachen.

Amazon EventBridge ist ein serverloser Service, der Anwendungskomponenten miteinander verbindet, um skalierbare, ereignisgesteuerte Anwendungen zu erstellen. Bei der ereignisgesteuerten Architektur werden lose gekoppelte Softwaresysteme erstellt, die zusammenarbeiten, indem sie Ereignisse auslösen und darauf reagieren. Ereignisse stellen eine Statusänderung oder ein Update dar.

Durch EventBridge die Bereitstellung von Step Functions Functions-Ereignissen an andere Dienste können Sie Ihre Standard-Workflows überwachen, ohne ständig die aufrufen DescribeExecutionAPIzu müssen, um den Status abzurufen. Statusänderungen bei der Ausführung von Zustandsmaschinen werden EventBridge automatisch an diese gesendet. Sie können diese Ereignisse für zielgerichtete Dienste verwenden. Ereignisse könnten beispielsweise einen aufrufen AWS Lambda Funktion, eine Nachricht zum Thema Amazon Simple Notification Service (AmazonSNS) veröffentlichen oder sogar einen anderen SFN Workflow ausführen.

So funktioniert die Zustellung von Veranstaltungen

Step Functions generiert Ereignisse und sendet sie an den EventBridge Standard-Event-Bus, der in jedem automatisch bereitgestellt wird AWS Konto. Ein Event Bus ist ein Router, der Ereignisse empfängt und sie an null oder mehr Ziele weiterleitet. Ziele sind andere AWS Dienstleistungen. Sie können Regeln für den Event-Bus angeben, die Ereignisse mit dem Ereignismuster der Regel vergleichen. Wenn das Ereignis einem Muster entspricht, sendet der Event-Bus das Ereignis an die angegebenen Ziele. Das folgende Diagramm zeigt diesen Vorgang:

AWS Dienste senden Ereignisse dorthin, EventBridge wo Regeln Ereignissen entsprechen, und senden sie an Ziele.
Standard-Workflows im Vergleich zu Express-Workflows

Nur Standard-Workflows senden Ereignisse an EventBridge. Um die Ausführung von Express-Workflows zu überwachen, können Sie CloudWatch Logs verwenden. Siehe CloudWatch Protokolle einloggen.

Step Functions Functions-Ereignisse

Step Functions sendet die folgenden Ereignisse automatisch an den EventBridge Standard-Event-Bus. Ereignisse, die dem Ereignismuster einer Regel entsprechen, werden nach bestem Wissen und Gewissen an die angegebenen Ziele übermittelt. Ereignisse werden möglicherweise nicht in der richtigen Reihenfolge zugestellt.

Weitere Informationen finden Sie unter EventBridge Ereignisse im EventBridge Amazon-Benutzerhandbuch.

Art der Einzelheiten des Ereignisses Beschreibung

Änderung des Ausführungsstatus

Stellt eine Änderung des Status einer State-Machine-Ausführung dar.

Bereitstellen von Step Functions Functions-Ereignissen mit EventBridge

Damit der EventBridge Standardereignisbus Step Functions Functions-Ereignisse an ein Ziel sendet, müssen Sie eine Regel erstellen. Jede Regel enthält ein Ereignismuster, das EventBridge mit jedem Ereignis übereinstimmt, das auf dem Ereignisbus empfangen wird. Wenn die Ereignisdaten mit dem angegebenen Ereignismuster EventBridge übereinstimmen, wird dieses Ereignis an die Ziele der Regel gesendet.

Umfassende Anweisungen zum Erstellen von Event-Bus-Regeln finden Sie im EventBridge Benutzerhandbuch unter Erstellen von Regeln, die auf Ereignisse reagieren.

Sie können auch eine Event-Bus-Regel für eine bestimmte Zustandsmaschine aus dem Step Functions Konsole:

  • Wählen Sie auf der Detailseite einer Zustandsmaschine Aktionen und dann EventBridgeRegel erstellen aus.

    In der EventBridge Konsole wird die Seite „Regel erstellen“ geöffnet, auf der der Zustandsmaschine als Ereignisquelle für die Regel ausgewählt ist.

  • Folgen Sie dem im EventBridge Benutzerhandbuch unter Erstellen von Regeln, die auf Ereignisse reagieren, beschriebenen Verfahren.

Ereignismuster erstellen, die Step Functions Functions-Ereignissen entsprechen

Jedes Ereignismuster ist ein JSON Objekt, das Folgendes enthält:

  • Ein source-Attribut, das den Service identifiziert, der das Ereignis sendet. Für Step Functions Functions-Ereignisse ist die Quelleaws.states.

  • (Optional): Ein detail-type-Attribut, das ein Array der zuzuordnenden Ereignistypen enthält.

  • (Optional): Ein detail-Attribut, das alle anderen Ereignisdaten für den Abgleich enthält.

Das folgende Ereignismuster entspricht beispielsweise allen Ereignissen zur Änderung des Ausführungsstatus von Step Functions:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"] }

Das folgende Beispiel entspricht zwar einer bestimmten Ausführung, die einer bestimmten Zustandsmaschine zugeordnet ist, aber wenn diese Ausführung fehlschlägt oder ein Timeout auftritt:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"], "detail": { "status": ["FAILED", "TIMED_OUT"], "stateMachineArn": ["arn:aws:states:us-east-1:123456789012:stateMachine:state-machine"], "executionArn": ["arn:aws:states:us-east-1:123456789012:execution:state-machine-name:execution-name"] } }

Weitere Informationen zum Schreiben von Ereignismustern finden Sie unter Ereignismuster im EventBridge Benutzerhandbuch.

Triggern von Step Functions steuert Maschinen mithilfe von Ereignissen zu

Sie können auch eine Step Functions Functions-Zustandsmaschine als Ziel für die EventBridge Event-Bus-Regel angeben. Auf diese Weise können Sie die Ausführung eines Step Functions Functions-Workflows als Reaktion auf ein Ereignis eines anderen auslösen. AWS Dienst.

Weitere Informationen finden Sie unter EventBridgeAmazon-Ziele im EventBridge Amazon-Benutzerhandbuch.

Detailreferenz zu Step Functions Ereignissen

Alle Ereignisse von AWS Dienste haben einen gemeinsamen Satz von Feldern, die Metadaten über das Ereignis enthalten, z. B. AWS Dienst, der die Quelle des Ereignisses ist, die Uhrzeit, zu der das Ereignis generiert wurde, das Konto und die Region, in der das Ereignis stattgefunden hat, und andere. Definitionen dieser allgemeinen Felder finden Sie unter Referenz zur Ereignisstruktur im EventBridge Amazon-Benutzerhandbuch.

Darüber hinaus weist jedes Ereignis ein detail-Feld auf, das spezifische Daten für das betreffende Ereignis enthält.

Bei der EventBridge Auswahl und Verwaltung von Step Functions Functions-Ereignissen sollten Sie Folgendes beachten:

  • Das source Feld für alle Ereignisse aus Step Functions ist auf gesetztaws.states.

  • Das Feld detail-type gibt den Ereignistyp an.

    Beispiel, Step Functions Execution Status Change.

  • Das Feld detail enthält die Daten, die für das betreffende Ereignis spezifisch sind.

Informationen zur Erstellung von Ereignismustern, die es Regeln ermöglichen, Step Functions Functions-Ereignissen zuzuordnen, finden Sie unter Ereignismuster im EventBridge Amazon-Benutzerhandbuch.

Weitere Informationen zu Ereignissen und deren EventBridge Verarbeitung finden Sie unter Amazon EventBridge Events im EventBridge Amazon-Benutzerhandbuch.

Änderung des Ausführungsstatus

Stellt eine Änderung des Status einer State-Machine-Ausführung dar.

Die detail-type Felder source und sind unten aufgeführt, da sie spezifische Werte für Step Functions-Ereignisse enthalten. Definitionen der anderen Metadatenfelder, die in allen Ereignissen enthalten sind, finden Sie unter Referenz zur Ereignisstruktur im EventBridge Amazon-Benutzerhandbuch.

Ereignisstruktur

{ . . ., "detail-type": "Step Functions Execution Status Change", "source"": "aws.states", . . ., "detail"": { "executionArn"" : "string", "input" : "string", "inputDetails" : { "included" : "boolean" }, "name" : "string", "output" : "string", "outputDetails" : { "included" : "boolean" }, "startDate" : "integer", "stateMachineArn" : "string", "stopDate" : "integer", "status" : "RUNNING | SUCCEEDED | FAILED | TIMED_OUT | ABORTED | PENDING_REDRIVE" } }

Anmerkungen

Ein Ereignis zur Änderung des Ausführungsstatus kann in seiner Definition eine Eingabeeigenschaft enthalten. Bei einigen Ereignissen kann ein Ereignis zur Änderung des Ausführungsstatus auch eine Ausgabeeigenschaft in seiner Definition enthalten.

  • Wenn die kombinierte Escape-Eingabe und die Escape-Ausgabe, an die gesendet wurde, 248 KB EventBridge überschreitet, wird die Eingabe ausgeschlossen. Ebenso wird die Ausgabe ausgeschlossen, wenn die Escape-Ausgabe 248 KB überschreitet. Dies ist auf die Kontingente für Ereignisse zurückzuführen.

  • Mit den Eigenschaften und können Sie feststellen, ob eine Payload gekürzt wurde. inputDetails outputDetails Weitere Informationen finden Sie unter CloudWatchEventsExecutionDataDetailsDatentyp.

  • Verwenden Sie für Standard-Workflows, DescribeExecutionum die vollständige Eingabe und Ausgabe anzuzeigen.

    DescribeExecutionist für Express-Workflows nicht verfügbar. Wenn Sie die vollständige Eingabe/Ausgabe sehen möchten, können Sie:

Beispiele

Beispiel Änderung des Ausführungsstatus: Die Ausführung wurde gestartet
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws::states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "RUNNING", "startDate": 1551225271984, "stopDate": null, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
Beispiel Änderung des Ausführungsstatus: Die Ausführung war erfolgreich
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "SUCCEEDED", "startDate": 1547148840101, "stopDate": 1547148840122, "input": "{}", "inputDetails": { "included": true }, "output": "\"Hello World!\"", "outputDetails": { "included": true } } }
Beispiel Änderung des Ausführungsstatus: Die Ausführung ist fehlgeschlagen
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "FAILED", "startDate": 1551225146847, "stopDate": 1551225151881, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
Beispiel Änderung des Ausführungsstatus: Timeout
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "TIMED_OUT", "startDate": 1551224926156, "stopDate": 1551224927157, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null
Beispiel Änderung des Ausführungsstatus: abgebrochen
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "ABORTED", "startDate": 1551225014968, "stopDate": 1551225017576, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }