Uso de AWS Lambda con un Application Load Balancer - AWS Lambda

Uso de AWS Lambda con un Application Load Balancer

Puede utilizar funciones de Lambda para procesar solicitudes desde un Application Load Balancer. Elastic Load Balancing admite funciones de Lambda como destinos de un Application Load Balancer. 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 Application Load Balancer

{ "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 Application Load Balancer 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 Application Load Balancer, consulte la sección sobre funciones de Lambda como destino en la Guía del usuario de Application Load Balancers.