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 ciertos AWS servicios directamente desde Lenguaje de estados de Amazon (ASL). Para obtener más información, consulte Trabajo con otros servicios y Cómo pasar parámetros a una API de servicio.

En qué se diferencia la integración optimizada de Lambda de la integración del SDK de Lambda AWS
  • El campo Payload de la respuesta se analiza de Json de escape a Json.

  • Si la respuesta contiene el campo FunctionError o se genera una excepción en la función de Lambda, se produce un error en la tarea.

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.

APIs compatibles AWS Lambda :

nota

Los parámetros Step Functions se expresan en PascalCase, incluso si la API de servicio nativa está en CamelCase. Por ejemplo, podría usar la acción de la API de Step Functions startSyncExecution y especificar su parámetro como StateMachineArn.

El ejemplo siguiente incluye un estado Task que invoca una función de 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 } } }

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":"arn:aws:lambda:us-east-1:123456789012:function:get-model-review-decision", "Payload":{ "model.$":"$.new_model", "token.$":"$$.Task.Token" }, "Qualifier":"prod-v1" }, "End":true } } }

Al invocar una función de Lambda, la ejecución esperará a que se complete la función. Si invoca la función de Lambda con una tarea de devolución de llamada, el tiempo de espera del latido no comienza a contar hasta que la función de Lambda haya terminado de ejecutarse y haya devuelto un resultado. Siempre y cuando se ejecute la función de Lambda, no se aplicará el tiempo de espera de latido.

También es posible llamar a Lambda de forma asíncrona mediante el parámetro InvocationType, como se muestra en el siguiente ejemplo:

nota

Para las invocaciones asíncronas de funciones de Lambda, el período de tiempo de espera del latido comienza de inmediato.

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

Cuando se devuelve el resultado Task, el resultado 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 de Lambda especificando el ARN de una función directamente en el campo «Recurso». Cuando se invoca una función de Lambda de esta manera, no se puede especificar .waitForTaskToken y el resultado de la tarea solo contiene el resultado 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 específica mediante la introducción de estas opciones en el ARN, en el campo Resource. Consulte los siguientes temas en la documentación de Lambda:

Para obtener información sobre cómo configurar IAM los permisos cuando se utilizan Step Functions con otros AWS servicios, consultePolíticas de IAM para servicios integrados.