Traitez les demandes d'Application Load Balancer avec Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Traitez les demandes d'Application Load Balancer avec Lambda

Vous pouvez utiliser une fonction Lambda pour traiter les demandes d'un Application Load Balancer. Elastic Load Balancing prend désormais en charge les fonctions Lambda en tant que cibles pour un Application Load Balancer. Utilisez les règles de l'équilibreur de charge pour acheminer les demandes HTTP vers une fonction, selon le chemin d'accès ou les valeurs des en-têtes. Traitez la demande et renvoyez une réponse HTTP à partir de votre fonction Lambda.

Elastic Load Balancing appelle votre fonction Lambda de façon synchrone avec un événement qui contient le corps et les métadonnées de la demande.

Exemple Evénement de demande d'Application Load Balancer
{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-1: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-1.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 }

Votre fonction traite l'événement et renvoie un document de réponse à l'équilibreur de charge en JSON. Elastic Load Balancing convertit le document en réponse de succès ou d'erreur HTTP, et la renvoie à l'utilisateur.

Exemple format du document de réponse
{ "statusCode": 200, "statusDescription": "200 OK", "isBase64Encoded": False, "headers": { "Content-Type": "text/html" }, "body": "<h1>Hello from Lambda!</h1>" }

Pour configurer un Application Load Balancer comme déclencheur de fonction, accordez à Elastic Load Balancing l'autorisation d'exécuter la fonction, créez un groupe cible qui achemine les demandes vers la fonction, et ajoutez à l'équilibreur de charge une règle qui envoie les demandes au groupe cible.

Utilisez la commande add-permission pour ajouter une instruction d'autorisation à la stratégie basée sur les ressources de votre fonction.

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

Vous devriez voir la sortie suivante:

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

Pour obtenir des instructions sur la configuration de l'écouteur de l'équilibreur de charge d'application et du groupe cible, consultez Fonctions Lambda en tant que cibles dans le Guide de l'utilisateur des Application Load Balancers.