Automatizzazione della distribuzione di eventi Step Functions con EventBridge - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Automatizzazione della distribuzione di eventi Step Functions con EventBridge

Con EventBridge, puoi selezionare eventi dai flussi di lavoro standard di Step Functions, da inviare ad altri servizi per un'ulteriore elaborazione. Questa tecnica offre un modo flessibile per collegare liberamente i componenti e monitorare le risorse.

Amazon EventBridge è un servizio serverless che collega tra loro i componenti delle applicazioni per creare applicazioni scalabili basate sugli eventi. L'architettura basata sugli eventi è uno stile di creazione di sistemi software liberamente accoppiati che interagiscono emettendo e rispondendo agli eventi. Gli eventi rappresentano un cambiamento di stato o un aggiornamento.

Utilizzando EventBridge per fornire eventi Step Functions ad altri servizi, è possibile monitorare i flussi di lavoro standard senza chiamarli continuamente DescribeExecutionAPIper ottenere lo stato. Le modifiche di stato nelle esecuzioni delle macchine a stati vengono inviate automaticamente. EventBridge È possibile utilizzare questi eventi per indirizzare i servizi. Ad esempio, gli eventi potrebbero richiamare una AWS Lambda funzione, pubblicare un messaggio sull'argomento Amazon Simple Notification Service (AmazonSNS) o persino eseguire un altro SFN flusso di lavoro.

Come funziona la distribuzione degli eventi

Step Functions genera e invia eventi al bus EventBridge eventi predefinito, che viene fornito automaticamente in ogni AWS account. Un router di eventi è un router che riceve eventi e li invia a nessuna o a più destinazioni o target. Gli obiettivi sono altri AWS servizi. È possibile specificare regole per il bus degli eventi che confrontano gli eventi con il modello di eventi della regola. Quando l'evento corrisponde a uno schema, il bus degli eventi invia l'evento ai target specificati. Il diagramma seguente mostra questo processo:

AWS i servizi inviano gli eventi EventBridge dove le regole corrispondono agli eventi e li inviano alle destinazioni.
Flussi di lavoro Standard o Express

Solo i flussi di lavoro standard emettono eventi per. EventBridge Per monitorare l'esecuzione dei flussi di lavoro rapidi, puoi utilizzare Logs. CloudWatch Per informazioni, consulta Registrazione dei registri CloudWatch .

Eventi Step Functions

Step Functions invia automaticamente i seguenti eventi al bus EventBridge eventi predefinito. Gli eventi che corrispondono allo schema di eventi di una regola vengono consegnati agli obiettivi specificati con la massima diligenza possibile. Gli eventi potrebbero essere consegnati fuori servizio.

Per ulteriori informazioni, consulta EventBridge gli eventi nella Amazon EventBridge User Guide.

Tipo di dettaglio dell'evento Descrizione

Modifica dello stato di esecuzione

Rappresenta una modifica dello stato di esecuzione di una macchina a stati.

Erogazione di eventi Step Functions utilizzando EventBridge

Per fare in modo che il bus eventi EventBridge predefinito invii gli eventi Step Functions a una destinazione, è necessario creare una regola. Ogni regola contiene uno schema di eventi, che EventBridge corrisponde a ogni evento ricevuto sull'event bus. Se i dati dell'evento corrispondono al modello di evento specificato, EventBridge invia quell'evento ai destinatari della regola.

Per istruzioni complete sulla creazione di regole del bus degli eventi, consultate Creazione di regole che reagiscono agli eventi nella Guida per l'EventBridge utente.

Puoi anche creare una regola del bus degli eventi per una macchina a stati specifica dalla Step Functions console:

  • Nella pagina Dettagli di una macchina a stati, scegli Azioni, quindi scegli Crea EventBridgeregola.

    La EventBridge console si apre sulla pagina Crea regola, con la macchina a stati selezionata come origine dell'evento per la regola.

  • Segui la procedura descritta in Creazione di regole che reagiscono agli eventi nella Guida per l'EventBridge utente.

Creazione di modelli di eventi che corrispondono agli eventi Step Functions

Ogni modello di evento è un JSON oggetto che contiene:

  • Un attributo source che identifica il servizio che invia l'evento. Per gli eventi Step Functions, la fonte èaws.states.

  • (Facoltativo): Un attributo detail-type che contiene una serie di tipi di eventi da abbinare.

  • (Facoltativo): Un attributo detail contenente qualsiasi altro dato relativo all'evento da abbinare.

Ad esempio, il seguente modello di eventi corrisponde a tutti gli eventi Execution Status Change di Step Functions:

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

Sebbene l'esempio seguente corrisponda a un'esecuzione specifica associata a una macchina a stati specifica, quando tale esecuzione fallisce o scade:

{ "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"] } }

Per ulteriori informazioni sulla scrittura di pattern di eventi, consultate Event patterns nella Guida EventBridge per l'utente.

Attivazione di macchine a stati Step Functions mediante eventi

È inoltre possibile specificare una macchina a stati Step Functions come destinazione per la regola del bus degli EventBridge eventi. Ciò consente di attivare l'esecuzione di un flusso di lavoro Step Functions in risposta a un evento di un altro AWS servizio.

Per ulteriori informazioni, consulta EventBridgegli obiettivi di Amazon nella Amazon EventBridge User Guide.

Riferimento dettagliato degli eventi Step Functions

Tutti gli eventi generati dai AWS servizi dispongono di un set comune di campi contenenti metadati relativi all'evento, ad esempio il AWS servizio da cui è generato l'evento, l'ora in cui l'evento è stato generato, l'account e la regione in cui si è verificato l'evento e altri. Per le definizioni di questi campi generali, consulta il riferimento alla struttura degli eventi nella Amazon EventBridge User Guide.

Inoltre, ogni evento ha un campo detail che contiene dati specifici per quel particolare evento.

Quando si utilizza EventBridge per selezionare e gestire gli eventi Step Functions, è utile tenere presente quanto segue:

  • Il source campo per tutti gli eventi di Step Functions è impostato suaws.states.

  • Il campo detail-type specifica il tipo di evento.

    Ad esempio Step Functions Execution Status Change.

  • Il campo detail contiene i dati specifici di quel particolare evento.

Per informazioni sulla creazione di modelli di eventi che consentono alle regole di corrispondere agli eventi Step Functions, consulta Event pattern nella Amazon EventBridge User Guide.

Per ulteriori informazioni sugli eventi e su come li EventBridge elabora, consulta Amazon EventBridge events nella Amazon EventBridge User Guide.

Modifica dello stato di esecuzione

Rappresenta una modifica dello stato di esecuzione di una macchina a stati.

I detail-type campi source e sono inclusi di seguito perché contengono valori specifici per gli eventi Step Functions. Per le definizioni degli altri campi di metadati inclusi in tutti gli eventi, consulta il riferimento alla struttura degli eventi nella Amazon EventBridge User Guide.

Struttura degli eventi

{ . . ., "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" } }

Remarks

Un evento Execution Status Change può contenere una proprietà di input nella sua definizione. Per alcuni eventi, un evento Execution Status Change può contenere anche una proprietà di output nella sua definizione.

Esempi

Esempio Modifica dello stato di esecuzione: esecuzione iniziata
{ "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 } }
Esempio Modifica dello stato di esecuzione: esecuzione riuscita
{ "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 } } }
Esempio Modifica dello stato di esecuzione: esecuzione non riuscita
{ "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 } }
Esempio Modifica dello stato di esecuzione: scaduto
{ "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
Esempio Modifica dello stato di esecuzione: interrotta
{ "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 } }