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
-
-
Paramètres pris en charge
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]]
"
]
}
]
}