Résolution des problèmes liés aux HTTP terminaux - Amazon Data Firehose

La diffusion de flux Amazon Data Firehose vers les tables Apache Iceberg dans Amazon S3 est en version préliminaire et peut faire l'objet de modifications.

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.

Résolution des problèmes liés aux HTTP terminaux

Cette section décrit les étapes de résolution des problèmes courants lors de la transmission de données par Amazon Data Firehose vers des destinations de HTTP points de terminaison génériques et vers des destinations partenaires, notamment Datadog, Dynatrace, LogicMonitor MongoDB, New Relic, Splunk ou Sumo Logic. Aux fins de cette section, toutes les destinations applicables sont appelées HTTP points de terminaison. Assurez-vous que le IAM rôle spécifié dans votre flux Firehose peut accéder au bucket de sauvegarde S3 et à la fonction Lambda pour la transformation des données (si la transformation des données est activée). Assurez-vous également que le IAM rôle a accès au groupe de CloudWatch journaux et aux flux de journaux pour vérifier les journaux d'erreurs. Pour plus d'informations, consultez Accorder à Firehose l'accès à une destination de point de HTTP terminaison.

Note

Les informations contenues dans cette section ne s'appliquent pas aux destinations suivantes : Splunk, OpenSearch Service, S3 et Redshift.

CloudWatch Journaux

Il est vivement recommandé d'activer la CloudWatch journalisation pour Firehose. Les journaux ne sont publiés que lorsqu'il y a des erreurs de diffusion vers votre destination.

Exceptions de destination

ErrorCode: HttpEndpoint.DestinationException

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The following response was received from the endpoint destination. 413: {\"requestId\": \"43b8e724-dbac-4510-adb7-ef211c6044b9\", \"timestamp\": 1598556019164, \"errorMessage\": \"Payload too large\"}", "errorCode": "HttpEndpoint.DestinationException", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

Les exceptions de destination indiquent que Firehose est capable d'établir une connexion avec votre terminal et de faire une HTTP demande, mais n'a pas reçu de code de réponse 200. Les réponses 2xx qui ne sont pas des 200 entraîneront également une exception de destination. Amazon Data Firehose enregistre le code de réponse et une charge utile de réponse tronquée reçus du point de terminaison configuré dans Logs. CloudWatch Dans la mesure où Amazon Data Firehose enregistre le code de réponse et la charge utile sans modification ni interprétation, il appartient au terminal de fournir la raison exacte pour laquelle il a rejeté la demande de livraison d'Amazon Data Firehose. HTTP Voici les recommandations de dépannage les plus courantes pour ces exceptions :

  • 400 : indique que vous envoyez une mauvaise demande en raison d'une mauvaise configuration de votre Amazon Data Firehose. Assurez-vous que vous disposez de l'URL, des attributs communs, du codage de contenu, de la clé d'accès et des indices de mise en mémoire tampon corrects pour votre destination. Consultez la documentation spécifique à la destination sur la configuration requise.

  • 401 : Indique que la clé d'accès que vous avez configurée pour votre stream Firehose est incorrecte ou manquante.

  • 403 : indique que la clé d'accès que vous avez configurée pour votre stream Firehose n'est pas autorisée à fournir des données au point de terminaison configuré.

  • 413 : indique que la charge utile des demandes qu'Amazon Data Firehose envoie au point de terminaison est trop importante pour que celui-ci puisse la gérer. Essayez de réduire l'indice de mise en mémoire tampon à la taille recommandée pour votre destination.

  • 429 : indique qu'Amazon Data Firehose envoie des demandes à une vitesse supérieure à celle que la destination peut gérer. Ajustez votre indice de mise en mémoire tampon en augmentant le temps de mise en mémoire tampon ou en augmentant la taille de la mémoire tampon (tout en respectant les limites de votre destination).

  • 5xx : indique qu'il y a un problème avec la destination. Le service Amazon Data Firehose fonctionne toujours correctement.

Important

Important : bien qu'il s'agisse des recommandations de dépannage les plus courantes, les raisons pour lesquelles des points de terminaison spécifiques fournissent des codes de réponse peuvent être différentes et les recommandations spécifiques aux points de terminaison doivent être suivies en premier lieu.

Réponse non valide

ErrorCode: HttpEndpoint.InvalidResponseFromDestination

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The response received from the specified endpoint is invalid. Contact the owner of the endpoint to resolve the issue. Response for request 2de9e8e9-7296-47b0-bea6-9f17b133d847 is not recognized as valid JSON or has unexpected fields. Raw response received: 200 {\"requestId\": null}", "errorCode": "HttpEndpoint.InvalidResponseFromDestination", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

Les exceptions de réponse non valides indiquent qu'Amazon Data Firehose a reçu une réponse non valide de la part du terminal de destination. La réponse doit être conforme aux spécifications de la réponse, sinon Amazon Data Firehose considérera la tentative de livraison comme un échec et redistribuera les mêmes données jusqu'à ce que la durée de nouvelle tentative configurée soit dépassée. Amazon Data Firehose considère les réponses qui ne respectent pas les spécifications de réponse comme des échecs, même si le statut de la réponse est de 200. Si vous développez un point de terminaison compatible avec Amazon Data Firehose, suivez les spécifications de réponse pour vous assurer que les données sont correctement livrées.

Vous trouverez ci-dessous quelques-uns des types de réponses non valides les plus courants et la manière d'y remédier :

  • Champs non valides JSON ou inattendus : indique que la réponse ne peut pas être correctement désérialisée sous forme de champs inattendus JSON ou qu'elle contient des champs inattendus. Assurez-vous que le contenu de la réponse n'est pas codé.

  • RequestIdManquant : indique que la réponse ne contient pas derequestId.

  • RequestId ne correspond pas : indique que le contenu requestId de la réponse ne correspond pas au contenu sortantrequestId.

  • Horodatage manquant : indique que la réponse ne contient aucun champ d'horodatage. Le champ d'horodatage doit être un nombre et non une chaîne.

  • En-tête Content-Type manquant : indique que la réponse ne contient pas d'en-tête « content-type: application/json ». Aucun autre content-type n'est accepté.

Important

Important : Amazon Data Firehose ne peut fournir des données qu'aux points de terminaison conformes aux spécifications de demande et de réponse Firehose. Si vous configurez votre destination pour un service tiers, assurez-vous d'utiliser le bon point de terminaison compatible avec Amazon Data Firehose, qui sera probablement différent du point de terminaison d'ingestion public. Par exemple, le point de terminaison Amazon Data Firehose de Datadog se trouve https://aws-kinesis-http-intake.logs.datadoghq.com/ alors que son point de terminaison public l'est. https://api.datadoghq.com/

Autres erreurs courantes

D'autres codes d'erreur et définitions sont répertoriés ci-dessous.

  • Code d'erreur : HttpEndpoint. RequestTimeout- Indique que le terminal a mis plus de 3 minutes à répondre. Si vous êtes le propriétaire de la destination, réduisez le temps de réponse du point de terminaison de destination. Si vous n'êtes pas le propriétaire de la destination, contactez le propriétaire et demandez-lui s'il est possible de réduire le temps de réponse (par exemple, en diminuant l'indice de mise en mémoire tampon afin que moins de données soient traitées par demande).

  • Code d'erreur : HttpEndpoint. ResponseTooLarge- Indique que la réponse est trop importante. La réponse doit être inférieure à 1 Mio, en-têtes compris.

  • Code d'erreur : HttpEndpoint. ConnectionFailed- Indique qu'une connexion n'a pas pu être établie avec le point de terminaison configuré. Cela peut être dû à une faute de frappe dans l'URL configurée, au fait que le point de terminaison n'est pas accessible à Amazon Data Firehose ou au fait que le point de terminaison met trop de temps à répondre à la demande de connexion.

  • Code d'erreur : HttpEndpoint. ConnectionReset- Indique qu'une connexion a été établie mais réinitialisée ou fermée prématurément par le terminal.

  • Code d'erreur : HttpEndpoint. SSLHandshakeFailure- Indique qu'une SSL poignée de main n'a pas pu être correctement effectuée avec le point de terminaison configuré.