Comment configurer une fonction Lambda à appeler lorsqu'un état (événement d'exécution) change dans AWS Step Functions ?

Dernière mise à jour : 05/04/2021

Je souhaite appeler une fonction AWS Lambda chaque fois qu'un état (événement d'exécution) change dans AWS Step Functions. Comment procéder ?

Résolution

Remarque : ces instructions décrivent la manière d'utiliser une règle d'événements Amazon EventBridge pour appeler une fonction Lambda chaque fois qu'un état change dans Step Functions. Au fur et à mesure que vous suivez les étapes, assurez-vous de procéder comme suit :

  • Confirmez que la modification d'événement que vous utilisez pour appeler la fonction Lambda est une action d'API prise en charge.
  • Créez la machine d'état Step Functions, la fonction Lambda et la règle d'événements EventBridge dans la même région AWS.

Créer des rôles IAM pour Step Functions et Lambda

1.    Créez un rôle AWS Identity and Access Management (IAM) pour Step Functions. Lorsque vous créez le rôle IAM, procédez comme suit :
Accordez à ce rôle IAM les autorisations nécessaires à votre cas d'utilisation.
Pour que votre machine d'état appelle votre fonction Lambda, autorisez l'action lambda:InvokeFunction.
Remarque : la stratégie gérée, AWSLambdaRole, inclut les autorisations requises pour appeler les fonctions Lambda.

2.    Créez un rôle d'exécution Lambda qui accorde à votre fonction l'autorisation de télécharger des journaux sur Amazon CloudWatch.
Remarque : la stratégie gérée, AWSLambdaBasicExecutionRole, accorde à votre fonction les autorisations basiques pour télécharger les journaux sur CloudWatch.

Créer une machine d'état Step Functions

Créez une machine d'état dans la console Step Functions. Dans IAM role for executions (Rôle IAM pour les exécutions), choisissez le rôle existant que vous avez créé pour Step Functions.

Pour plus d'informations, consultez Qu'est-ce qu'AWS Step Functions ?

Créer une fonction Lambda qui est configurée pour imprimer l'événement qu'elle reçoit

1.    Créez une fonction dans la console Lambda. Dans Execution role (Rôle d’exécution), choisissez le rôle créé précédemment pour Lambda.

2.    Dans la console Lambda, utilisez l'éditeur de code pour mettre à jour le code de la fonction afin que lorsqu'elle s'exécute, la fonction imprime l'événement qu'elle reçoit.

Exemple de code Python indiquant à une fonction Lambda d'imprimer les événements qu'elle reçoit

import json

def lambda_handler(event, context):
print("Received event: " + json.dumps(event)) return {
'statusCode': 200,
'body': json.dumps("Hello")
}

Pour plus d'informations, consultez Création de fonctions Lambda avec Python.

Créez une règle d'événements EventBridge qui appelle votre fonction Lambda chaque fois qu'un état change dans Step Functions

1.    Ouvrez la console EventBridge.

2.    Dans le panneau de navigation de gauche, sous Événements, choisissez Règles.

3.    Choisissez Create rule (Créer une règle).

4.    Saisissez un nom pour la règle dans le champ Name (Nom).

5.    Dans Define Pattern (Définir le modèle), choisissez Event pattern (Modèle d'événement).

6.    Pour Event matching pattern (Modèle de correspondance d'événement), choisissez Pre-defined pattern by service (Modèle prédéfini par service).

7.    Pour le fournisseur de services, choisissez AWS.

8.    Dans Service Name (Nom du service), choisissez Step Functions.

9.    Dans Event Type (Type d'événement), choisissez Step Functions Execution Status Change (Changement d'état d'exécution dans Step Functions).

Remarque : vous pouvez aussi choisir All Events (Tous les événements) pour que Step Functions lance la règle. Vous pouvez également choisir AWS API Call via CloudTrail (Appel d'API AWS via CloudTrail) pour lancer la règle pour certains événements d'appel d'API Step Functions, tels que StartExecution (Démarrer l'exécution). Pour plus d'informations, consultez Events delivered via CloudTrail (Événements livrés via CloudTrail).

10.    Choisissez les statuts, la machine d'état Amazon Resource Names (ARN), et les ARN d'exécution que vous souhaitez utiliser pour lancer l'événement. Vous pouvez choisir Any (Tout) pour chaque type de déclencheur, ou bien identifier des statuts ou des ARN Specific (Spécifiques) pour chacun d'entre eux.

11.    Sous Select targets (Sélectionner les cibles), confirmez que la fonction Lambda est le type cible.

12.    Pour Function (Fonction), choisissez la fonction Lambda que vous avez créée

13.    Choisissez Create rule (Créer une règle).

Pour plus d'informations, consultez les événements Amazon EventBridge et EventBridge pour connaître les modifications du statut d'exécution de Step Functions.

Tester votre configuration

1.    Dans la console Step Functions, démarrez une nouvelle exécution de votre machine d'état.

2.    Dans le volet de navigation gauche de la console CloudWatch, choisissez Logs (Journaux).

3.    Choisissez le flux de journal créé par votre fonction Lambda.

4.    Vérifiez les détails de l'événement dans le flux de journaux.

Remarque : l'affichage du flux de journaux peut prendre plusieurs minutes après le démarrage de la nouvelle exécution.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?