Utilización de AWS Lambda con otros servicios - AWS Lambda

Utilización de AWS Lambda con otros servicios

AWS Lambda se integra con otros servicios de AWS para invocar funciones. Puede configurar desencadenadores para invocar una función en respuesta a los eventos del ciclo de vida de los recursos, responder a solicitudes HTTP entrantes, consumir eventos de una cola o realizar ejecuciones programadas.

Cada servicio que se integra con Lambda envía datos a la función como un evento con formato JSON. La estructura del documento de evento es diferente para cada tipo de evento y contiene datos sobre el recurso o la solicitud que activó la función. Los tiempos de ejecución de Lambda convierten el evento en un objeto y se lo pasan a la función.

En el siguiente ejemplo, se muestra un evento de prueba procedente de un Balanceador de carga de aplicaciones que representa una solicitud GET para /lambda?query=1234ABCD.

ejemplo evento procedente de un Balanceador de carga de aplicaciones

{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-279XGJDqGZ5rsrHC2Fjr/49e9d65c45c6791a" } }, "httpMethod": "GET", "path": "/lambda", "queryStringParameters": { "query": "1234ABCD" }, "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding": "gzip", "accept-language": "en-US,en;q=0.9", "connection": "keep-alive", "host": "lambda-alb-123578498.us-east-2.elb.amazonaws.com", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "x-amzn-trace-id": "Root=1-5c536348-3d683b8b04734faae651f476", "x-forwarded-for": "72.12.164.125", "x-forwarded-port": "80", "x-forwarded-proto": "http", "x-imforwards": "20" }, "body": "", "isBase64Encoded": false }
nota

El runtime de Lambda convierte el documento de evento en un objeto y se lo pasa al controlador de la función. Para los lenguajes compilados, Lambda proporciona las definiciones de los tipos de eventos en una biblioteca. Consulte los temas siguientes para obtener más información.

En el caso de los servicios que generan una cola o un flujo de datos, debe crear un mapeo de origen de eventos en Lambda y conceder a Lambda permiso para tener acceso al otro servicio en el rol de ejecución. Lambda lee los datos desde el otro servicio, crea un evento e invoca la función.

Servicios cuyos eventos lee Lambda

Los demás servicios invocan la función directamente. Debe conceder al otro servicio permiso en la política basada en recursos de la función y configurar el otro servicio para que genere eventos e invoque la función. En función del servicio, la invocación puede ser síncrona o asíncrona. Para la invocación síncrona, el otro servicio espera la respuesta de la función y puede realizar reintentos si se producen errores.

Para la invocación asíncrona, Lambda coloca el evento en la cola antes de pasárselo a la función. El otro servicio obtiene una respuesta de operación correcta en cuanto el evento se pone en cola y no está al tanto de lo que ocurre después. Si se produce un error, Lambda gestiona los reintentos y puede enviar los eventos con errores al destino que se haya configurado.

Además, algunos servicios se integran con Lambda de otras maneras que no implican invocar funciones.

Servicios que integran Lambda de otras formas

Consulte los temas de este capítulo para obtener más información sobre cada servicio y eventos de ejemplo que puede utilizar para probar la función.