Comment résoudre les erreurs liées aux déclencheurs Lambda dans Amazon Cognito ?

Lecture de 4 minute(s)
0

Je souhaite résoudre les erreurs que je rencontre lors de la configuration des fonctions AWS Lambda en tant que déclencheurs dans Amazon Cognito.

Résolution

Vous trouverez ci-dessous les erreurs courantes à résoudre lorsque vous utilisez des déclencheurs Lambda dans Amazon Cognito.

« L'invocation de PreSignUp a échoué en raison d'une erreur AccessDeniedException. »

**Remarque :**Le type de déclencheur est mentionné dans le message d'erreur. Par exemple, une fonction Lambda associée en tant que déclencheur PreSignUp à votre groupe d'utilisateurs répond par l'erreur précédente.

Raison de l'erreur

Lorsque vous ajoutez une fonction Lambda en tant que déclencheur à votre groupe d'utilisateurs depuis la console Amazon Cognito, Amazon Cognito effectue les actions suivantes :

  • Ajoute l'autorisation requise à la politique de ressources de la fonction. Cette politique de ressources permet à Amazon Cognito d'invoquer la fonction en présence de certains types de déclencheurs d'événements.
  • Affiche le message suivant : « Autorisation d'invoquer la fonction Lambda : vous accordez à Amazon Cognito l'autorisation d'invoquer cette fonction Lambda en votre nom. Amazon Cognito ajoutera une déclaration de politique basée sur les ressources à la fonction. »

Cette erreur se produit également lorsque vous supprimez la fonction que vous avez ajoutée en tant que déclencheur. Si vous supprimez un déclencheur Lambda, vous devez mettre à jour le déclencheur correspondant dans le groupe d'utilisateurs. Par exemple, lorsque vous supprimez le déclencheur de post-authentification, vous devez définir le déclencheur d'authentification post-authentification dans le groupe d'utilisateurs correspondant sur aucun.

Résolution de l'erreur

Lorsque vous créez un déclencheur en dehors de la console Amazon Cognito, vous devez explicitement ajouter des autorisations lorsque vous attribuez le déclencheur au groupe d'utilisateurs. Pour ajouter des autorisations, utilisez un SDK AWS, l’Interface de la ligne de commande AWS (AWS CLI) ou Amazon CloudFormation.

Lorsque vous ajoutez des autorisations, Amazon Cognito invoque la fonction uniquement pour le compte de votre groupe d'utilisateurs et de votre compte. Pour ajouter des autorisations depuis la console Lambda, suivez les étapes décrites dans la section Utilisation de politiques basées sur les ressources pour Lambda. Vous pouvez également utiliser l'opération AddPermission.

Voici un exemple de politique basée sur les ressources Lambda qui permet à Amazon Cognito d'invoquer une fonction. Le groupe d'utilisateurs est à l’état aws:SourceArn et le compte à l’état aws:SourceAccount.

Remarque : Replacez example_lambda_function_arn, example_account_number et example_user_pool_arn par vos propres valeurs.

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "lambda-allow-cognito",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "example_lambda_function_arn",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "example_account_number"
        },
        "ArnLike": {
          "AWS:SourceArn": "example_user_pool_arn"
        }
      }
    }
  ]
}

« Erreur lors de l'authentification, veuillez contacter le propriétaire de l'application. »

Raison de l'erreur

Cette erreur se produit pour deux raisons :

  • À l'exception des déclencheurs Lambda d'expéditeur personnalisés, Amazon Cognito invoque les fonctions Lambda de manière synchrone. La fonction doit répondre dans les 5 secondes. Si la fonction ne répond pas, Amazon Cognito réitère l’appel. Après trois tentatives infructueuses, la fonction expire. Vous ne pouvez pas modifier la valeur du délai d'attente de 5 secondes.
  • Si Amazon Cognito n'obtient pas de réponse du déclencheur dans les 5 secondes, Amazon Cognito renvoie l'erreur après trois tentatives infructueuses.

Résolution de l'erreur

Si la fonction expire, appliquez les meilleures pratiques d'utilisation des fonctions Lambda afin d'optimiser la fonction. Vous pouvez demander à la fonction Lambda associée au groupe d'utilisateurs d'appeler de manière asynchrone une deuxième fonction Lambda. Avec cette configuration, les fonctions peuvent effectuer toutes les actions requises sans délai.

« PreSignUp a échoué avec une erreur de syntaxe dans le module lambda_function. »

Raison de l'erreur

Amazon Cognito renvoie cette erreur en cas d'erreur de syntaxe dans votre fonction Lambda.

Résolution de l'erreur

Revérifiez le code de la fonction et corrigez toute erreur de syntaxe.

« PreSignUp a échoué avec le gestionnaire d'erreurs Handler 'lambda_handler'; manquant sur le module; lambda_function. »

Raison de l'erreur

Les paramètres d'exécution de la fonction incluent un paramètre de gestionnaire. Si des informations ou une syntaxe incorrectes sont définies pour HandlerInfo, la fonction ne peut pas s'exécuter et entraîne cette erreur.

Résolution de l'erreur

Configurez le paramètre de gestionnaire dans la configuration de votre fonction pour indiquer à l'environnement d'exécution Lambda la méthode de gestionnaire à invoquer.

Lorsque vous configurez une fonction dans Python, la valeur du paramètre du gestionnaire correspond au nom du fichier et au nom du module du gestionnaire, séparés par un point. Par exemple, Main.handler appelle la méthode de gestionnaire définie dans main.py.

Pour plus d'informations sur la syntaxe du gestionnaire, consultez la section Modification de l'environnement d'exécution.

Informations connexes

Considérations importantes

Environnements d’exécution AWS Lambda personnalisés

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