Invocar Lambda con Step Functions - AWS Step Functions

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:

En qué se diferencia la integración optimizada de Lambda de LambdaAWSIntegración de SDK
  • LaPayloadde la respuesta se analiza de Json escapado a Json.

  • Si la respuesta contiene el campoFunctionError, 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:

El ejemplo siguiente incluyeTaskestado 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 medianteInvocationTypepará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 } } }

CuandoTaskse 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.