Je souhaite invoquer une fonction AWS Lambda chaque fois qu'un état change dans AWS Step Functions. Comment faire ?
Résolution
Remarque : ces instructions décrivent comment utiliser une règle d'événements Amazon EventBridge pour invoquer une fonction Lambda chaque fois qu'un état change dans Step Functions. À mesure que vous suivez les étapes, assurez-vous de procéder comme suit :
- Vérifiez que le changement d'événement que vous utilisez pour invoquer 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 Gestion des identités et des accès AWS (AWS IAM) pour Step Functions. Lorsque vous créez le rôle IAM, procédez comme suit :
Accordez au rôle IAM les autorisations nécessaires pour effectuer toutes les actions requises pour votre cas d'utilisation.
Autorisez l'action lambda:InvokeFunction pour que votre machine d’état invoque votre fonction Lambda.
Remarque : la politique gérée AWSLambdaRole inclut les autorisations requises pour appeler des fonctions Lambda.
2. Créez un rôle d'exécution Lambda qui accorde à la fonction l'autorisation de charger des journaux sur Amazon CloudWatch.
Remarque : la politique gérée AWSLambdaBasicExecutionRole accorde à votre fonction les autorisations de base pour charger des journaux sur CloudWatch.
Créer une machine d’état Step Functions
Créez une machine d’état dans la console Step Functions. Dans Rôle IAM pour les exécutions, choisissez le rôle existant que vous avez créé pour Step Functions.
Pour plus d'informations, consultez la section Qu'est-ce qu'AWS Step Functions ?
Créer une fonction Lambda configurée pour imprimer l'événement qu'elle reçoit
1. Créez une fonction dans la console Lambda. Dans Rôle d'exécution, choisissez le rôle existant que vous avez créé pour Lambda.
2. Dans la console Lambda, utilisez l'éditeur de code pour mettre à jour le code de la fonction afin que, lors de son exécution, la fonction imprime l'événement qu'elle reçoit.
Exemple de code Python qui indique à 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 la section Création de fonctions Lambda avec Python.
Créer une règle d'événements EventBridge qui invoque votre fonction Lambda chaque fois qu'un état change dans Step Functions
1. Ouvrez la console EventBridge.
2. Dans le volet de navigation, sous Événements, sélectionnez Règles.
3. Sélectionnez Créer une règle.
4. Dans Nom, saisissez un nom pour la règle.
5. Définir un modèle, sélectionnez Modèle d’événement.
6. Dans Modèle de correspondance d’événement, choisissez Modèle prédéfini par service.
7. Dans Fournisseur de services, choisissez AWS.
8. Dans Nom du service, choisissez Step Functions.
9. Dans Type d'événement, choisissez Changement du statut d'exécution de Step Functions.
Remarque : vous pouvez également, si vous le souhaitez, sélectionner Tous les événements pour que Step Functions lance la règle. Vous pouvez également sélectionner Appel d’API AWS via CloudTrail pour lancer la règle pour certains événements d'appel d'API Step Functions, tels que StartExecution. Pour plus d'informations, consultez la section Événements des services AWS.
10. Choisissez les statuts, indiquez les Amazon Resource Names (ARN) et les ARN d'exécution de la machine d’état pour lesquels vous souhaitez lancer l'événement. Vous pouvez choisir N'importe lequel pour chaque type de déclencheur ou identifier des statuts ou des ARN spécifiques pour chaque déclencheur.
11. Sous Sélectionner des cibles, vérifiez que la fonction Lambda est le type de cible.
12. Dans Fonction, choisissez la fonction Lambda que vous avez créée
13. Sélectionnez Créer une règle.
Pour plus d'informations, consultez les sections Événements Amazon EventBridge et EventBridge pour les changements d’état d’exécution de Step Functions.
Tester votre configuration
1. Dans la console Step Functions, lancez une nouvelle exécution de votre machine d'état.
2. Dans la console CloudWatch, dans le volet de navigation de gauche, sous Journaux, sélectionnez Groupes de journaux.
3. Choisissez le flux de log 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.
Informations connexes
Surveillance de Step Functions à l'aide de CloudWatch
Création d'une machine d'état Step Functions qui utilise Lambda