Comment résoudre les problèmes d'intégration de Lambda Kinesis Firehose ?

Lecture de 6 minute(s)
0

J'ai intégré AWS Lambda à Amazon Kinesis Data Firehose pour transformer les données sources entrantes et les transmettre aux destinations. Toutefois, la fonction Lambda n'a pas été invoquée ou a échoué.

Brève description

Les fonctions Lambda configurées avec Amazon Kinesis Data Firehose peuvent échouer pour les raisons suivantes :

  • Autorisations liées à la Gestion des identités et l’AWS Identity and Access Management (IAM) insuffisantes
  • Durée Lambda dépassant le délai maximum autorisé
  • Limitation Lambda
  • Erreurs de transformation des données
  • Erreurs liées à la fonction Lambda

**Remarque :**Si l'invocation de votre fonction Lambda est dépassée par le réseau ou échoue parce que vous avez atteint la limite d'invocation, Kinesis Data Firehose retente l’invocation trois fois. Pour plus d'informations, consultez la section Gestion des échecs de transformation des données.

Résolution

Si ce n'est pas déjà fait, activez la journalisation Amazon CloudWatch pour votre compte Kinesis Data Firehose. Vous pouvez consulter les journaux d'erreurs spécifiques lorsque l'invocation Lambda concernant la transformation ou la diffusion de données échoue. Vous pouvez activer la journalisation des erreurs de Kinesis Data Firehose lorsque vous créez votre flux de diffusion. Le format du nom du groupe de journaux est /aws/kinesisfirehose/delivery-stream-name. Le paramètre delivery-stream-name correspond au nom du flux de diffusion.

Pour identifier la raison de l'échec de la fonction Lambda, recherchez /aws/lambda/lambda-function-name dans le groupe Amazon CloudWatch Logs. Les enregistrements de transformation de données ayant échoué sont envoyés dans le compartiment Amazon Simple Storage Service (Amazon S3) sous forme de sauvegarde dans le dossier des échecs de traitement. Les enregistrements de votre compartiment S3 contiennent également le message d'erreur en cas d'échec de l'invocation. Pour plus d'informations sur la résolution des échecs d'invocation Lambda, consultez la section Gestion des échecs de transformation des données.

Autorisations IAM insuffisantes

« AssumeRoleAccessDenied - L'accès a été refusé. Assurez-vous que la politique de confiance pour le rôle IAM fourni autorise Kinesis Data Firehose à assumer ce rôle. »

Cette erreur se produit lorsque le rôle IAM Amazon Kinesis Data Firehose n'est pas autorisé à assumer « firehose.amazonaws.com ». Assurez-vous que la politique de confiance d'IAM dispose des autorisations nécessaires pour utiliser « firehose.amazonaws.com », comme suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "firehose.amazonaws.com"
      },
     "Action": "sts:AssumeRole"
    }
  ]
}

« InvokeAccessDenied - L'accès a été refusé. Assurez-vous que la politique d'accès autorise l'accès à la fonction Lambda. »

Cette erreur se produit lorsque le rôle IAM Amazon Kinesis Data Firehose n'est pas autorisé à invoquer la fonction Lambda utilisée pour la transformation des données. Assurez-vous que la politique IAM autorise Amazon Kinesis Data Firehose à invoquer la fonction Lambda de la manière suivante :

**Remarque :**Remplacez l'ARN de la ressource dans cet exemple par vos variables.

{
  "Effect": "Allow",
  "Action": [
    "lambda:InvokeFunction",
    "lambda:GetFunctionConfiguration"
  ],
  "Resource": [
    "arn:aws:lambda:region:account-id:function:function-name:function-version"
  ]
}

Durée Lambda dépassant le délai maximum autorisé

« Firehose a rencontré des erreurs de délai d'attente lors de l'appel à AWS Lambda. Le délai d'expiration maximal des fonctions prises en charge est de 5 minutes. »

Cette erreur se produit lorsque l'exécution de la fonction Lambda prend plus de 5 minutes. Pour résoudre les erreurs de délai d'expiration des fonctions Lambda avec Kinesis Data Firehose, consultez la section Gestion des échecs de transformation des données.

Limitation Lambda

« InvokeLimitExceeded - La limite d'exécutions simultanées Lambda est dépassée. Augmentez la limite d'exécutions simultanées. »

Cette erreur se produit lorsque la limite d'exécutions simultanées Lambda est dépassée. Consultez les métriques de simultanéité Lambda dans les journaux CloudWatch pour déterminer votre utilisation. Pour demander une augmentation des exécutions simultanées, consultez la section Demande d'augmentation du quota.

Pour plus d'informations, consultez les sections Dimensionnement des fonctions Lambda et Comment résoudre les problèmes de limitation des fonctions Lambda en cas d'erreur « Taux dépassé » et d’erreur 429 « TooManyRequestsException » ?

Erreurs de transformation des données

« JSONProcessingException - Une erreur s'est produite lors de l'analyse des enregistrements renvoyés par la fonction Lambda. Assurez-vous que les enregistrements renvoyés respectent le modèle d'état requis par Kinesis Data Firehose. »

Cette erreur se produit lorsque les enregistrements transformés renvoyés par Lambda ne sont pas au format requis. Tous les enregistrements transformés renvoyés par Lambda doivent contenir les paramètres recordId, result et data. Vérifiez le code de la fonction Lambda et les journaux CloudWatch pour vérifier que ces enregistrements contiennent ces paramètres.

**Remarque :**Pour supprimer intentionnellement un enregistrement, définissez la valeur sur Supprimé.

Pour plus d'informations, consultez la section Transformation des données et modèle d'état.

« DuplicatedRecordID - Plusieurs enregistrements ont été renvoyés avec le même identifiant d'enregistrement. Assurez-vous que la fonction Lambda renvoie des identifiants d'enregistrement uniques pour chaque enregistrement. »

Cette erreur se produit si plusieurs enregistrements transformés renvoyés par la fonction Lambda à Kinesis Firehose ont le même identifiant d'enregistrement. L'identifiant d'enregistrement est transmis de Kinesis Data Firehose à Lambda lors de l'invocation de la fonction. Vérifiez le code de fonction Lambda et les journaux CloudWatch pour vérifier que chaque identifiant d'enregistrement est unique.

Erreurs liées à la fonction Lambda

« La fonction Lambda a été invoquée avec succès, mais elle a renvoyé un résultat d'erreur. »

Cette erreur se produit lorsqu'Amazon Kinesis Data Firehose a réussi à invoquer la fonction Lambda, mais que l'exécution de la fonction Lambda a échoué en raison d'une erreur. Vérifiez les métriques de transformation des données CloudWatch pour confirmer que Kinesis Data Firehose a invoqué votre fonction.

Si Kinesis Data Firehose n'a pas invoqué votre fonction Lambda, vérifiez le délai d'invocation pour voir s'il dépasse le paramètre de délai d'expiration. L’exécution de votre fonction Lambda peut nécessiter un délai d'attente plus important ou une plus grande quantité de mémoire. Pour plus d'informations sur les mesures d'invocation, consultez la section Métriques d'invocation.

« Taille de charge utile maximale autorisée dépassée » ou « LAMBDA_RUNTIME Impossible de publier la réponse de confirmation du gestionnaire. Code de réponse HTTP : 413. »

Amazon Kinesis Data Firehose invoque une fonction Lambda de manière synchrone et la limite de charge utile d'invocation est de 6 Mo pour chaque demande et réponse. La limite de charge utile Lambda est une limite stricte qui ne peut pas être augmentée. Assurez-vous que la taille de la mémoire tampon ne dépasse pas 6 Mo pour chaque demande et réponse.

Pour plus d'informations, consultez la section Quotas Lambda.

Informations connexes

Pourquoi est-ce que je rencontre un problème de transmission de données avec Kinesis Data Firehose ?

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