Transformation des données avec Amazon Data Firehose - Amazon Data Firehose

Amazon Data Firehose était auparavant connu sous le nom d'Amazon Kinesis Data Firehose

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.

Transformation des données avec Amazon Data Firehose

Amazon Data Firehose peut appeler votre fonction Lambda pour transformer les données sources entrantes et transmettre les données transformées aux destinations. Vous pouvez activer la transformation des données Amazon Data Firehose lorsque vous créez votre flux Firehose.

Flux de transformation de données

Lorsque vous activez la transformation des données Firehose, Firehose met en mémoire tampon les données entrantes. L'indicateur de taille de la mémoire tampon est compris entre 0,2 Mo et 3 Mo. L'indicateur de taille de mémoire tampon Lambda par défaut est de 1 Mo pour toutes les destinations, à l'exception de Splunk et Snowflake. Pour Splunk et Snowflake, l'indicateur de mise en mémoire tampon par défaut est de 256 Ko. L'indicateur de l'intervalle de mise en mémoire tampon Lambda est compris entre 0 et 900 secondes. L'indicateur d'intervalle de mise en mémoire tampon Lambda par défaut est de soixante secondes pour toutes les destinations sauf Snowflake. Pour Snowflake, l'intervalle d'indication de mise en mémoire tampon par défaut est de 30 secondes. Pour ajuster la taille de la mémoire tampon, définissez le ProcessingConfigurationparamètre de l'UpdateDestinationAPI CreateDeliveryStreamor avec l'ProcessorParameterappel BufferSizeInMBs andIntervalInSeconds. Firehose invoque ensuite la fonction Lambda spécifiée de manière asynchrone avec chaque lot mis en mémoire tampon en utilisant le mode d'appel synchrone. AWS Lambda Les données transformées sont envoyées de Lambda à Firehose. Firehose l'envoie ensuite à la destination lorsque la taille de mémoire tampon ou l'intervalle de mise en mémoire tampon de destination spécifiés sont atteints, selon la première éventualité.

Important

Le mode d'invocation synchrone Lambda a une taille de charge utile limitée à 6 Mo pour la demande et la réponse. Assurez-vous que votre taille de mise en mémoire tampon pour l'envoi de la demande à la fonction est inférieure ou égale à 6 Mo. Assurez-vous également que la réponse que votre fonction renvoie ne dépasse pas 6 Mo.

Transformation de données et modèle d'état

Tous les enregistrements transformés depuis Lambda doivent contenir les paramètres suivants, sinon Amazon Data Firehose les rejette et considère cela comme un échec de transformation des données.

Pour Kinesis Data Streams et Direct PUT :

recordId

L'ID d'enregistrement est transmis d'Amazon Data Firehose à Lambda lors de l'appel. L'enregistrement transformé doit comporter le même ID d'enregistrement. La moindre incohérence entre l'ID de l'enregistrement initial et l'ID de l'enregistrement transformé est traitée comme un échec de la transformation des données.

result

État de la transformation de données de l'enregistrement. Les valeurs possibles sont : Ok (l'enregistrement a été transformé), Dropped (l'enregistrement a été abandonné de manière intentionnelle par votre logique de traitement) et ProcessingFailed (impossible de transformer l'enregistrement). Si un enregistrement a le statut Ok ouDropped, Amazon Data Firehose considère qu'il a été traité avec succès. Dans le cas contraire, Amazon Data Firehose considère qu'il n'a pas été traité correctement.

data

Charge utile des données transformées, d'après l'encodage en base64.

Voici un exemple de résultat Lambda :

{ "recordId": "<recordId from the Lambda input>", "result": "Ok", "data": "<Base64 encoded Transformed data>" }

Pour Amazon MSK

recordId

L'ID d'enregistrement est transmis de Firehose à Lambda lors de l'invocation. L'enregistrement transformé doit comporter le même ID d'enregistrement. La moindre incohérence entre l'ID de l'enregistrement initial et l'ID de l'enregistrement transformé est traitée comme un échec de la transformation des données.

result

État de la transformation de données de l'enregistrement. Les valeurs possibles sont : Ok (l'enregistrement a été transformé), Dropped (l'enregistrement a été abandonné de manière intentionnelle par votre logique de traitement) et ProcessingFailed (impossible de transformer l'enregistrement). Si un enregistrement a le statut Ok ouDropped, Firehose considère qu'il a été traité avec succès. Dans le cas contraire, Firehose considère qu'il n'a pas été traité correctement.

KafkaRecordValue

Charge utile des données transformées, d'après l'encodage en base64.

Voici un exemple de résultat Lambda :

{ "recordId": "<recordId from the Lambda input>", "result": "Ok", "kafkaRecordValue": "<Base64 encoded Transformed data>" }

Plans Lambda

Ces plans montrent comment créer et utiliser des fonctions AWS Lambda pour transformer les données de vos flux de données Amazon Data Firehose.

Pour voir les plans disponibles dans la console AWS Lambda
  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lambda/.

  2. Choisissez Create function (Créer une fonction), puis Use a blueprint (Utiliser un plan).

  3. Dans le champ Blueprints, recherchez le mot clé firehose pour trouver les plans Amazon Data Firehose Lambda.

Liste des plans :

  • Traiter les enregistrements envoyés au flux Amazon Data Firehose (Node.js, Python)

    Ce plan montre un exemple de base de la manière de traiter les données de votre flux de données Firehose à l'aide AWS de Lambda.

    Date de la dernière version : novembre 2016.

    Notes de publication : aucune.

  • CloudWatch Journaux de processus envoyés à Firehose

    Ce plan est obsolète. Pour plus d'informations sur le traitement CloudWatch des journaux envoyés à Firehose, consultez Writing to Firehose Using Logs. CloudWatch

  • Convertir les enregistrements de flux Amazon Data Firehose au format syslog en JSON (Node.js)

    Ce plan montre comment convertir les enregistrements d'entrée au format Syslog RFC3164 en JSON.

    Date de la dernière version : novembre 2016.

    Notes de publication : aucune.

Pour voir les plans disponibles dans le AWS Serverless Application Repository
  1. Accédez à AWS Serverless Application Repository.

  2. Choisissez Parcourir toutes les applications.

  3. Dans le champ Applications recherchez le mot-clé firehose.

Vous pouvez également créer une fonction Lambda sans utiliser de plan. Voir Commencer à utiliser AWS Lambda.

Gestion des échecs de transformation des données

Si l'appel de votre fonction Lambda échoue en raison d'un délai d'attente réseau ou parce que vous avez atteint la limite d'invocation Lambda, Amazon Data Firehose réessaie l'appel trois fois par défaut. Si l'invocation échoue, Amazon Data Firehose ignore alors ce lot d'enregistrements. Les enregistrements ignorés sont traités comme des enregistrements comme n'ayant pas été correctement traités. Vous pouvez spécifier ou remplacer les options de nouvelle tentative à l'aide de l'API CreateDeliveryStreamorUpdateDestination. Pour ce type d'échec, vous pouvez enregistrer les erreurs d'appel dans Amazon CloudWatch Logs. Pour de plus amples informations, veuillez consulter Surveillance d'Amazon Data Firehose à l'aide de journaux CloudWatch .

Si le statut de la transformation des données d'un enregistrement est indiquéProcessingFailed, Amazon Data Firehose considère l'enregistrement comme n'ayant pas été traité correctement. Pour ce type de panne, vous pouvez envoyer des journaux d'erreurs vers Amazon CloudWatch Logs à partir de votre fonction Lambda. Pour plus d'informations, consultez la section Accès à Amazon CloudWatch Logs AWS Lambda dans le manuel duAWS Lambda développeur.

En cas d'échec de la transformation des données, les enregistrements n'ayant pas été correctement traités sont diffusés au compartiment S3 du dossier processing-failed. Les enregistrements sont au format suivant :

{ "attemptsMade": "count", "arrivalTimestamp": "timestamp", "errorCode": "code", "errorMessage": "message", "attemptEndingTimestamp": "timestamp", "rawData": "data", "lambdaArn": "arn" }
attemptsMade

Nombre de tentatives de demandes d'invocation.

arrivalTimestamp

Heure à laquelle l'enregistrement a été reçu par Amazon Data Firehose.

errorCode

Code d'erreur HTTP renvoyé par Lambda.

errorMessage

Message d'erreur renvoyé par Lambda.

attemptEndingTimestamp

Heure à laquelle Amazon Data Firehose a cessé de tenter d'appeler Lambda.

rawData

Données d'enregistrement encodées en base64.

lambdaArn

L'Amazon Resource Name (ARN) de la fonction  Lambda.

Durée d'une invocation Lambda

Amazon Data Firehose prend en charge une durée d'invocation Lambda allant jusqu'à 5 minutes. Si l'exécution de votre fonction Lambda prend plus de 5 minutes, le message d'erreur suivant s'affiche : Firehose a rencontré des erreurs de temporisation lors de l'appel à Lambda. AWS Le délai maximum de fonctionnement pris en charge est de cinq minutes.

Pour plus d'informations sur ce que fait Amazon Data Firehose en cas d'erreur de ce type, consultez. Gestion des échecs de transformation des données

Sauvegarde de l'enregistrement source

Amazon Data Firehose peut sauvegarder simultanément tous les enregistrements non transformés dans votre compartiment S3 tout en livrant les enregistrements transformés à destination. Vous pouvez activer la sauvegarde des enregistrements source lorsque vous créez ou mettez à jour votre stream Firehose. Vous ne pouvez pas désactiver la sauvegarde de l'enregistrement source après l'avoir activée.