Invoquer une AWS Lambda fonction avec Step Functions - AWS Step Functions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Invoquer une AWS Lambda fonction avec Step Functions

Découvrez comment utiliser Step Functions pour appeler des fonctions Lambda de manière synchrone ou asynchrone dans le cadre d'une application sans serveur pilotée par des événements.

Pour en savoir plus sur l'intégration aux AWS services dans Step Functions, reportez-vous Intégration des services aux sections etTransmission de paramètres à une API de service dans Step Functions.

Principales fonctionnalités de l'intégration Lambda optimisée

Lambda optimisé APIs

Exemples de flux de travail

Ce qui suit inclut un Task état qui invoque une fonction Lambda.

{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Arguments":{ "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction" }, "End":true } } }

L'exemple suivant inclut un état Task qui implémente le modèle d'intégration de service de rappel.

{ "StartAt":"GetManualReview", "States":{ "GetManualReview":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Arguments":{ "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision", "Payload":{ "model":"{% $states.input.my-model %}", "TaskToken": "{% $states.context.Task.Token %}" }, "Qualifier":"prod-v1" }, "End":true } } }

Lorsque vous appelez une fonction Lambda, l'exécution attend que la fonction soit terminée. Si vous appelez la fonction Lambda avec une tâche de rappel, le délai d'expiration du rythme cardiaque ne commence à être compté qu'une fois que la fonction Lambda a terminé son exécution et renvoyé un résultat. Tant que la fonction Lambda est exécutée, le délai d'expiration du rythme cardiaque n'est pas appliqué.

Il est également possible d'appeler Lambda de manière asynchrone à l'aide du InvocationType paramètre, comme le montre l'exemple suivant :

{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Arguments": { "FunctionName": "arn:aws:lambda:region:account-id:function:echo", "InvocationType": "Event" }, "End": true } } }
Note

Pour les appels asynchrones de fonctions Lambda, le délai d'expiration du rythme cardiaque commence immédiatement.

Lorsque le Task résultat est renvoyé, la sortie de la fonction est imbriquée dans un dictionnaire de métadonnées. Exemples :

{ "ExecutedVersion":"$LATEST", "Payload":"FUNCTION OUTPUT", "SdkHttpMetadata":{ "HttpHeaders":{ "Connection":"keep-alive", "Content-Length":"4", "Content-Type":"application/json", "Date":"Fri, 26 Mar 2021 07:42:02 GMT", "X-Amz-Executed-Version":"$LATEST", "x-amzn-Remapped-Content-Length":"0", "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010", "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0" }, "HttpStatusCode":200 }, "SdkResponseMetadata":{ "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3" }, "StatusCode":200 }

Ressource fonctionnelle directement spécifiée

Vous pouvez également invoquer une fonction Lambda en spécifiant un ARN de fonction directement dans le champ « Ressource ». Lorsque vous appelez une fonction Lambda de cette manière, vous ne pouvez pas la spécifier .waitForTaskToken et le résultat de la tâche contient uniquement le résultat de la fonction.

{ "StartAt":"CallFunction", "States":{ "CallFunction": { "Type":"Task", "Resource":"arn:aws:lambda:region:account-id:function:HelloFunction", "End": true } } }

Avec cette forme d'intégration, la fonction peut réussir tout en envoyant une réponse contenant un FunctionError champ. Dans ce scénario, la tâche du flux de travail échouera.

Vous pouvez appeler une version ou un alias de fonction Lambda spécifique en spécifiant ces options dans l'ARN du Resource champ. Consultez les informations suivantes dans la documentation Lambda :

Politiques IAM pour les appels AWS Lambda

Les exemples de modèles suivants montrent comment AWS Step Functions générer des politiques IAM en fonction des ressources contenues dans la définition de votre machine d'état. Pour plus d’informations, consultez Comment Step Functions génère des politiques IAM pour les services intégrés et Découvrez les modèles d'intégration des services dans Step Functions.

Dans l'exemple suivant, une machine à états avec deux états de AWS Lambda tâche qui appellent function1 etfunction2, la politique générée automatiquement inclut l'lambda:Invokeautorisation pour les deux fonctions.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:myFn1", "arn:aws:lambda:us-east-1:123456789012:function:myFn2" ] } ] }