Uso de AWS Lambda con un Balanceador de carga de aplicaciones - AWS Lambda

Uso de AWS Lambda con un Balanceador de carga de aplicaciones

Puede utilizar funciones de Lambda para procesar solicitudes desde un Balanceador de carga de aplicaciones. Elastic Load Balancing admite funciones de Lambda como destinos de un Balanceador de carga de aplicaciones. Utilice reglas de balanceador de carga para direccionar solicitudes HTTP a una función según la ruta o los valores de encabezado. Procese la solicitud y devuelva una respuesta HTTP desde de su función de Lambda.

Elastic Load Balancing invoca la función de Lambda de forma sincrónica con un evento que contiene el cuerpo de la solicitud y metadatos.

ejemplo Evento de solicitud de 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 }

Su función procesa el evento y devuelve un documento de respuesta al balanceador de carga en JSON. Elastic Load Balancing convierte el documento en una respuesta HTTP de éxito o error y lo devuelve al usuario.

ejemplo formato del documento de respuesta

{ "statusCode": 200, "statusDescription": "200 OK", "isBase64Encoded": False, "headers": { "Content-Type": "text/html" }, "body": "<h1>Hello from Lambda!</h1>" }

Para configurar Balanceador de carga de aplicaciones como desencadenador de funciones, conceda a Elastic Load Balancing permiso para ejecutar la función, cree un grupo de destino que envíe las solicitudes a la función y agregue una regla al balanceador de carga para enviar las solicitudes al grupo de destino.

Utilice el comando add-permission para añadir una instrucción de permiso a la política basada en recursos de la función.

aws lambda add-permission --function-name alb-function \ --statement-id load-balancer --action "lambda:InvokeFunction" \ --principal elasticloadbalancing.amazonaws.com

Debería ver los siguientes datos de salida:

{ "Statement": "{\"Sid\":\"load-balancer\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"elasticloadbalancing.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:alb-function\"}" }

Para ver instrucciones sobre cómo configurar el agente de escucha de Balanceador de carga de aplicaciones, consulte la sección sobre funciones de Lambda como destino en la Guía del usuario de Application Load Balancers.