Come posso configurare una funzione Lambda da invocare quando uno stato cambia in AWS Step Functions?
Desidero invocare una funzione AWS Lambda ogni volta che uno stato cambia in AWS Step Functions. Come posso farlo?
Risoluzione
Nota: queste istruzioni descrivono come utilizzare una regola di eventi Amazon EventBridge per invocare una funzione Lambda ogni volta che uno stato cambia in Step Functions. Nell'eseguire la procedura, assicurati di quanto segue:
- Verifica che la modifica dell'evento utilizzata per invocare la funzione Lambda sia un'azione API supportata.
- Crea la macchina a stati Step Functions, la funzione Lambda e la regola di eventi EventBridge nella stessa Regione AWS.
Crea ruoli IAM per Step Functions e Lambda
1. Crea un ruolo AWS Identity and Access Management (AWS IAM) per Step Functions. Quando crei il ruolo IAM, procedi come segue:
Concedi al ruolo IAM le autorizzazioni per eseguire tutte le azioni richieste per il caso d'uso.
Consenti all'azione, lambda:InvokeFunction, di far sì che la macchina a stati invochi la funzione Lambda.
Nota: la policy gestita, AWSLambdaRole, include le autorizzazioni necessarie per invocare le funzioni Lambda.
2. Crea un ruolo di esecuzione Lambda che conceda alla funzione l'autorizzazione per caricare log in Amazon CloudWatch.
Nota: la policy gestita, AWSLambdaBasicExecutionRole, concede alla funzione le autorizzazioni di base per caricare i log in CloudWatch.
Crea una macchina a stati Step Functions
Crea una macchina a stati nella console Step Functions. Come ruolo IAM per le esecuzioni, scegli il ruolo esistente che hai creato per Step Functions.
Per ulteriori informazioni, consulta Che cos'è Step Functions?
Crea una funzione Lambda configurata per stampare l'evento che riceve
1. Crea una funzione nella console Lambda. Come ruolo di esecuzione, scegli il ruolo esistente che hai creato per Lambda.
2. Nella console Lambda, utilizza l'editor di codice per aggiornare il codice della funzione in modo che, quando viene eseguita, la funzione stampi l'evento che riceve.
Esempio di codice Python che indica a una funzione Lambda di stampare gli eventi che riceve
import json def lambda_handler(event, context): print("Received event: " + json.dumps(event)) return { 'statusCode': 200, 'body': json.dumps("Hello") }
Per ulteriori informazioni, consulta Compilazione di funzioni Lambda con Python.
Crea una regola di eventi EventBridge che invochi la funzione Lambda ogni volta che uno stato cambia in Step Functions
1. Apri la console EventBridge.
2. Nel pannello di navigazione a sinistra, per la voce Eventi, scegli Regole.
3. Scegli Crea regola.
4. In Nome, inserisci un nome per la regola.
5. Per Definisci il modello, scegli Modello di eventi.
6. Per Modello di corrispondenza degli eventi, scegli Modello predefinito dal servizio.
7. Per Fornitore di servizi, seleziona AWS.
8. Per Nome del servizio, scegli Step Functions.
9. Per Tipo di evento, scegli Modifica dello stato di esecuzione di Step Functions.
Nota: puoi anche scegliere di impostare la regola in modo che venga avviata da Tutti gli eventi per Step Functions. Oppure puoi scegliere AWS API Call through CloudTrail (Chiamata API AWS tramite CloudTrail) per avviare la regola per determinati eventi di chiamata API di Step Functions, come StartExecution. Per ulteriori informazioni, consulta Eventi derivanti dai AWS servizi.
10. Scegli gli stati, la macchina a stati Nome della risorsa Amazon (ARN) e gli ARN di esecuzione con cui desideri avviare l'evento. Puoi scegliere Any (Qualsiasi) per ogni tipo di trigger o identificare stati o ARN Specific (Specifico) per ogni trigger.
11. In Seleziona destinazioni, verifica che Funzione Lambda sia il tipo di destinazione.
12. Per Funzione, scegli la funzione Lambda che hai creato.
13. Scegli Crea regola.
Per ulteriori informazioni, consulta Eventi in Amazon EventBridge e Che cos'è Step Functions?
Verifica la configurazione
1. Nella console Step Functions, avvia una nuova esecuzione della macchina a stati.
2. Nella console CloudWatch, alla Log del pannello di navigazione a sinistra, scegli Gruppi di log.
3. Scegli il flusso di log creato dalla funzione Lambda.
4. Verifica i dettagli dell'evento nel flusso di log.
Nota: la visualizzazione del flusso di log può richiedere diversi minuti dopo l'avvio della nuova esecuzione.
Informazioni correlate
Monitoraggio delle metriche di Step Functions tramite Amazon CloudWatch
Creazione di una macchina a stati Step Functions che utilizza Lambda
- Argomenti
- Compute
- Tag
- AWS Lambda
- Lingua
- Italiano
