Comment configurer les fonctions Lambda en tant que cibles pour les Application Load Balancers et résoudre les problèmes associés ?

Lecture de 6 minute(s)
0

Je dois configurer les fonctions AWS Lambda en tant que cibles pour les Application Load Balancers, et je souhaite savoir comment résoudre les problèmes qui pourraient survenir.

Résolution

Elastic Load Balancing prend en charge l'utilisation de fonctions Lambda comme cibles pour traiter les demandes provenant d’Application Load Balancers. Pour plus d'informations, consultez la section Utilisation d'AWS Lambda avec un Application Load Balancer.

Étape 1 : Créer une fonction Lambda

1.    Ouvrez la page Fonctions dans la console Lambda.

2.    Sélectionnez Créer une fonction.

3.    Choisissez Auteur à partir de zéro.

4.    Entrez un nom de fonction.

5.    Dans la liste déroulante Exécution, choisissez Python 3.9 comme environnement d'exécution pour ce scénario.

6.    Pour le rôle d'exécution, choisissez Créer un nouveau rôle avec des autorisations Lambda de base.

Remarque : Pour plus d'informations sur les rôles d'exécution, consultez la section Rôle d'exécution Lambda.

7.    Sélectionnez Créer une fonction.

8.     Une fois la fonction créée, choisissez l'onglet Code. Dans la section Code source, remplacez le code de fonction existant par le code suivant :

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.    Choisissez Déployer.

Étape 2 : Création d'un groupe cible pour la fonction Lambda

**Remarque : Pour en savoir plus, consultez **l’étape 1 : Configurez un groupe cible.

1.    Ouvrez la console Amazon EC2.

2.    Dans le volet de navigation, sous Équilibrage de charge, choisissez Groupes cibles.

3.    Choisissez Créer un groupe cible.

4.    Dans Configuration de base, pour Choisir un type de cible, sélectionnez Fonction Lambda.

5.    Dans Nom du groupe cible, saisissez un nom pour le groupe cible.

6.    (Facultatif) Pour activer les vérifications de l'état, dans la section Vérifications de l'état, choisissez Activer.

7.    (Facultatif) Ajoutez une ou plusieurs balises comme suit :

  • Développez la section Balises.
  • Choisissez Ajouter une balise.
  • Entrez la clé et la valeur de la balise.

8.    Choisissez Suivant.

9.    Choisissez une fonction Lambda comme cible.
-ou-
Choisissez Ajouter une fonction ultérieurement pour spécifier une fonction Lambda ultérieurement.

10.    Choisissez Créer un groupe cible.

Remarque : Les autorisations de l'équilibreur de charge pour appeler une fonction Lambda sont accordées différemment selon la méthode utilisée pour créer un groupe cible et enregistrer une fonction. Pour plus d'informations, consultez la section Autorisations d'appel de la fonction Lambda.

Étape 3 : Configuration d'un équilibreur de charge et d'un écouteur

Pour configurer un équilibreur de charge et un écouteur, suivez les étapes de l'étape 3 : Configurez un équilibreur de charge et un écouteur.

Étape 4 : Testez l'équilibreur de charge

Pour tester l'équilibreur de charge, suivez les étapes de l'étape 4 : Testez l'équilibreur de charge. Si la configuration fonctionne, le navigateur affiche le message « Hello from Lambda ! »

Remarque : Si vous n'avez pas activé les surveillances d’état pour votre fonction Lambda, l'état est en mode indisponible. Vous pouvez tester l'équilibreur de charge sans effectuer une surveillance de l’état car cela n'affecte pas les fonctions Lambda en tant que cibles pour Application Load Balancers.

Limites des fonctions Lambda en tant que cibles

Pour plus d'informations sur les limites des fonctions Lambda en tant que cibles, consultez la section Fonctions Lambda en tant que cibles et consultez les informations sous Limites.

Les groupes cibles Lambda sont limités à une seule cible de fonction Lambda. Pour plus d'informations, consultez la section Préparer la fonction Lambda.

Erreurs courantes liées aux fonctions Lambda en tant que cibles

« Le délai de connexion a expiré »

Cette erreur indique que les groupes de sécurité de votre équilibreur de charge n'autorisent pas le trafic sur le port de l’écouteur. Pour résoudre cette erreur, gérez vos groupes de sécurité et assurez-vous que les règles d’entrée de votre groupe de sécurité autorisent le trafic entrant sur les ports de l'écouteur. Les règles sortantes ne sont pas requises pour les groupes de sécurité car les groupes de sécurité sont statiques. Les réponses au trafic entrant autorisé sont autorisées à sortir, quelles que soient les règles sortantes.

« Le groupe cible n'a pas pu être trouvé »

Cette erreur indique que le groupe cible a été supprimé. Pour résoudre cette erreur, supprimez la politique de ressources avec le groupe cible supprimé. La suppression de la politique de ressources supprime le déclencheur.

1.    Ouvrez la page Fonctions dans la console Lambda.

2.    Choisissez la fonction Lambda associée au groupe cible.

3.    Choisissez l'onglet Configuration, puis choisissez ** Autorisations**.

4.    Faites défiler la page jusqu'à la section Déclarations de politique basées sur les ressources, puis sélectionnez la politique que vous souhaitez supprimer.

5.    Choisissez Supprimer puis choisissez Supprimer dans l'alerte d'avertissement pour confirmer que vous souhaitez supprimer définitivement la déclaration de politique de la politique de ressources.

Vous pouvez également utiliser la commande remove-permission de l’interface de la ligne de commande AWS suivante pour supprimer la politique basée sur les ressources :

Remarque : Dans la commande suivante, remplacez EXAMPLE_FUNCTION par le nom de votre fonction Lambda et EXAMPLE_ID par l'ID de votre instruction.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

Remarque : Si vous recevez des erreurs lors de l’exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d’AWS CLI.

« Une erreur s'est produite (AccessDenied) lors de l'appel de l'opération RegisterTargets : le principal elasticloadbalancing n'est pas autorisé à invoquer arn <Lambda ARN> du groupe cible <Target Group ARN>»

Lorsqu'une requête adressée à une fonction Lambda échoue, l'équilibreur de charge enregistre un code de motif dans le champ error_reason du journal d'accès. L'équilibreur de charge incrémente également la métrique Amazon CloudWatch correspondante. Pour plus d'informations, consultez la section Codes de motif d'erreur.

Enregistrez une fonction Lambda en tant que cible à l'aide de l'interface de la ligne de commande AWS. Utilisez la commande de l'interface de la ligne de commande AWS add-permission pour accorder à Elastic Load Balancing l'autorisation d'invoquer votre fonction Lambda.

Erreurs connues relatives aux fonctions Lambda en tant que cibles

« Les nouvelles métriques liées à cette fonctionnalité (LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes and StandardProcessedBytes) ne sont pas disponibles dans le panneau de surveillance de la console ELB ».

Accédez aux nouvelles métriques Lambda depuis la console Amazon CloudWatch.

« La nouvelle API ModifyTargetGroup permet de configurer une valeur de délai d'expiration de 120 secondes pour le contrôle de santé, mais la console ELB n'autorise pas une valeur supérieure à 60 secondes ».

Pour configurer un délai de vérification de l'état supérieur à 60 secondes, appelez l'API ModifyTargetGroup via l'interface de ligne de commande AWS. Vous pouvez configurer la valeur pour une durée maximale de 120 secondes.

Exemple de commande modify-target-group :

**Remarque :**Dans la commande suivante, remplacez EXAMPLE_TARGET_GROUP_ARN par l'ARN de votre groupe cible et EXAMPLE_REGION par le code de votre région AWS.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

Informations connexes

Fonctions Lambda en tant que cibles

Gestion de versions des fonctions Lambda et alias

Déplacement du trafic à l'aide d'alias

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an