Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Invoca una AWS Lambda funzione con Step Functions
Scopri come usare Step Functions per richiamare le funzioni Lambda in modo sincrono o asincrono come parte di un'applicazione serverless basata sugli eventi.
Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere Integrazione dei servizi ePassaggio di parametri a un servizio API in Step Functions.
Caratteristiche principali dell'integrazione Optimized Lambda
-
Il
Payload
campo della risposta viene analizzato da Json in escape a Json. -
Se la risposta contiene il campo
FunctionError
o viene sollevata un'eccezione all'interno della funzione Lambda, l'attività ha esito negativo.
Per ulteriori informazioni sulla gestione di input, output e risultati dello stato, consulta Elaborazione di input e output in Step Functions.
Lambda supportata APIs
-
-
Parametri supportati
Esempi di flussi di lavoro
Quanto segue include uno Task
stato che richiama una funzione 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’esempio seguente include uno stato Task
che implementa il modello di integrazione del servizio di callback.
{
"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
}
}
}
Quando richiami una funzione Lambda, l'esecuzione attenderà il completamento della funzione. Se si richiama la funzione Lambda con un'attività di callback, il timeout del battito cardiaco inizia a contare solo dopo che la funzione Lambda non ha completato l'esecuzione e restituito un risultato. Finché la funzione Lambda è in esecuzione, il timeout del battito cardiaco non viene applicato.
È anche possibile chiamare Lambda in modo asincrono utilizzando il InvocationType
parametro, come illustrato nell'esempio seguente:
Nota
Per le chiamate asincrone delle funzioni Lambda, il periodo di timeout dell'heartbeat inizia immediatamente.
{
"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
}
}
}
Quando viene restituito il Task
risultato, l'output della funzione viene annidato all'interno di un dizionario di metadati. Per esempio:
{ "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 }
In alternativa, puoi richiamare una funzione Lambda specificando una ARN funzione direttamente nel campo «Risorsa». Quando si richiama una funzione Lambda in questo modo, non è possibile .waitForTaskToken
specificare e il risultato dell'attività contiene solo l'output della funzione.
{
"StartAt":"CallFunction",
"States":{
"CallFunction": {
"Type":"Task",
"Resource":"arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
",
"End": true
}
}
}
Puoi richiamare una versione o un alias specifico della funzione Lambda specificando tali opzioni nel ARN campo. Resource
Vedi quanto segue nella documentazione di Lambda:
IAMpolitiche per le chiamate AWS Lambda
I modelli di esempio seguenti mostrano come AWS Step Functions genera IAM le politiche in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consulta In che modo Step Functions genera IAM politiche per servizi integrati e Scopri i modelli di integrazione dei servizi in Step Functions.
AWS Step Functions genera una IAM politica basata sulla definizione della macchina a stati. Per una macchina a stati con due stati di AWS Lambda attività che chiamano function1
efunction2
, è necessario utilizzare una politica con lambda:Invoke
autorizzazioni per le due funzioni.
Questo viene mostrato nell'esempio seguente.
{
"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]]
"
]
}
]
}