Invoquez un AWS Lambda fonctionne 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.

Invoquez un AWS Lambda fonctionne 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 avec AWS services dans Step Functions, voir Intégration des services et. Transmission de paramètres à un service API dans Step Functions

Principales fonctionnalités de l'intégration Lambda optimisée
  • Le Payload champ de la réponse est analysé de Json échappé à Json.

  • Si la réponse contient le champ FunctionError ou si une exception est déclenchée dans la fonction Lambda, la tâche échoue.

Pour de plus amples informations sur la gestion des états d'entrée, des états de sortie et des résultats, veuillez consulter Traitement des entrées et des sorties dans Step Functions.

Lambda pris en charge 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", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012: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", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:get-model-review-decision", "Payload":{ "model.$":"$.new_model", "token.$":"$$.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 :

Note

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

{ "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", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:echo", "InvocationType": "Event" }, "End": true } } }

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

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

Vous pouvez également appeler une fonction Lambda en spécifiant une fonction ARN 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:us-east-1:123456789012:function:HelloFunction", "End": true } } }

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

IAMpolitiques relatives aux appels AWS Lambda

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

AWS Step Functions génère une IAM politique basée sur la définition de votre machine à états. Pour une machine à états avec deux AWS Lambda La tâche indique cet appel function1 et function2 une politique avec lambda:Invoke des autorisations pour les deux fonctions doit être utilisée.

Voici un exemple :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function1]]", "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function2]]" ] } ] }