Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Invocar Lambda con Step Functions
Step Functions puede controlar ciertosAWSservicios directamente desde el Lenguaje de estados de Amazon. Para obtener más información acerca de cómo trabajar conAWS Step Functionsy sus integraciones, consulte los temas siguientes:
-
La
Payload
de la respuesta se analiza de Json escapado a Json. -
Si la respuesta contiene el campo
FunctionError
, la tarea falla.
Para obtener más información acerca de cómo administrar la entrada, la salida y los resultados de los estados, consulte Procesamiento de entrada y salida en Step Functions.
API de AWS Lambda compatibles:
-
-
Parámetros admitidos
El ejemplo siguiente incluyeTask
estado que invoca a una función Lambda.
{
"StartAt":"CallLambda",
"States":{
"CallLambda":{
"Type":"Task",
"Resource":"arn:aws:states:::lambda:invoke",
"Parameters":{
"FunctionName":"MyFunction"
},
"End":true
}
}
}
El ejemplo siguiente incluye un estado Task
que implementa el patrón de integración de servicios de devolución de llamada.
{
"StartAt":"GetManualReview",
"States":{
"GetManualReview":{
"Type":"Task",
"Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters":{
"FunctionName":"get-model-review-decision",
"Payload":{
"model.$":"$.new_model",
"token.$":"$$.Task.Token"
},
"Qualifier":"prod-v1"
},
"End":true
}
}
}
Cuando invoque una función Lambda, la ejecución esperará a que se complete la función. Sin embargo, es posible llamar a Lambda de forma asincrónica medianteInvocationType
parámetro, como se muestra en el ejemplo siguiente:
{
"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": "echo",
"InvocationType": "Event"
},
"End": true
}
}
}
CuandoTask
se devuelve el resultado, la salida de la función se anida dentro de un diccionario de metadatos. Por ejemplo:
{ "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 }
Como alternativa, puede invocar una función Lambda especificando un ARN de función directamente en el campo «Recurso». Cuando invoca una función Lambda de esta forma, no puede especificar.waitForTaskToken
, y el resultado de la tarea contiene únicamente la salida de la función.
{
"StartAt":"CallFunction",
"States":{
"CallFunction": {
"Type":"Task",
"Resource":"arn:aws:lambda:us-east-1:123456789012:function:HelloFunction",
"End": true
}
}
}
Puede invocar un alias o una versión de la función de Lambda de específica mediante la incorporación de estas opciones en el ARN, enResource
. Consulte los temas siguientes en la documentación de Lambda:
Para obtener información acerca de cómo configurar IAM cuando se utiliza Step Functions con otrosAWSservicios, consultePolíticas de IAM para servicios integrados.