Invocación de una función de Lambda de forma asíncrona - AWS Lambda

Invocación de una función de Lambda de forma asíncrona

Varios Servicios de AWS, como de Amazon Simple Storage Service (Amazon S3) y Amazon Simple Notification Service (Amazon SNS), invocan funciones de forma asíncrona para procesar eventos. También puede invocar una función de Lambda de forma asíncrona mediante la AWS Command Line Interface (AWS CLI) o los AWS SDK. Cuando se invoca una función de forma asíncrona, no se espera una respuesta del código de función. Se entrega el evento a Lambda, y Lambda se ocupa del resto. Puede configurar la forma en que Lambda gestiona los errores y enviar registros de invocaciones a un recurso posterior, como Amazon Simple Queue Service (Amazon SQS) o Amazon EventBridge (EventBridge), para encadenar los componentes de la aplicación.

El siguiente diagrama muestra los clientes que invocan una función de Lambda de forma asíncrona. Lambda pone en cola los eventos antes de enviarlos a la función.

Los clientes invocan una función de forma asíncrona. Lambda pone en cola los eventos antes de enviarlos a la función

Para la invocación asíncrona, Lambda coloca el evento en una cola y devuelve una respuesta de “proceso realizado con éxito” sin información adicional. Un proceso independiente lee eventos de la cola y los envía a la función.

Para invocar una función de Lambda de forma asíncrona mediante la AWS Command Line Interface (AWS CLI) o uno de los SDK de AWS, establezca el parámetro InvocationType en Event. En el siguiente ejemplo se muestra un comando de la AWS CLI para invocar una función.

aws lambda invoke \ --function-name my-function \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

Debería ver los siguientes datos de salida:

{
    "StatusCode": 202
}

La opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute aws configure set cli-binary-format raw-in-base64-out. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.

El archivo de salida (response.json) no contiene ninguna información, pero se crea al ejecutar este comando. Si Lambda no puede añadir el caso a la cola, el mensaje de error aparece en la salida del comando.