

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.

# Transformez les données sources dans Amazon Data Firehose
<a name="data-transformation"></a>

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.

## Comprendre le flux de transformation des données
<a name="data-transformation-flow"></a>

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 [ProcessingConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessingConfiguration.html)paramètre de l'[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)API [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)or avec le bouton [ProcessorParameter](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessorParameter.html)appelé `BufferSizeInMBs` and`IntervalInSeconds`. Firehose invoque ensuite la fonction Lambda spécifiée de manière synchrone 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.

## Durée d'invocation Lambda
<a name="data-transformation-execution-duration"></a>

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. [Gérer les défaillances liées à la transformation des données](data-transformation-failure-handling.md)

# Paramètres requis pour la transformation des données
<a name="data-transformation-status-model"></a>

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.

------
#### [ For Kinesis Data Streams and Direct PUT ]

Les paramètres suivants sont obligatoires pour tous les enregistrements transformés à partir de Lambda.
+ `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 des 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` ou`Dropped`, 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`— La charge utile des données transformées, après le codage en base64.

  Voici un exemple de résultat Lambda :

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

------
#### [ For Amazon MSK ]

Les paramètres suivants sont obligatoires pour tous les enregistrements transformés à partir de Lambda.
+ `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 des 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` ou`Dropped`, 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`— La charge utile des données transformées, après le codage en base64.

  Voici un exemple de résultat Lambda :

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

------

# Blueprints Lambda pris en charge
<a name="lambda-blueprints"></a>

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/](https://console.aws.amazon.com/lambda/).

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

1. 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. N'utilisez pas ce plan. Cela peut entraîner des frais élevés lorsque les données des CloudWatch journaux décompressés dépassent 6 Mo (limite Lambda). Pour plus d'informations sur le traitement CloudWatch des journaux envoyés à Firehose, consultez [Writing to Firehose](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html) 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 RFC3164 Syslog 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](https://aws.amazon.com/serverless/serverlessrepo).

1. Choisissez **Parcourir toutes les applications**.

1. 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](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

# Gérer les défaillances liées à la transformation des données
<a name="data-transformation-failure-handling"></a>

Si l'appel de votre fonction Lambda échoue en raison d'un délai d'attente du 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 [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)or`[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)`. Pour ce type d'échec, vous pouvez enregistrer les erreurs d'appel dans Amazon CloudWatch Logs. Pour de plus amples informations, veuillez consulter [Surveillez Amazon Data Firehose à l'aide des journaux CloudWatch](monitoring-with-cloudwatch-logs.md).

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](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html) dans le *manuel du AWS Lambda développeur*.

Si une transformation de données échoue, les enregistrements traités sans succès sont envoyés à votre compartiment S3 dans le `processing-failed` dossier. 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.

# Sauvegarder les enregistrements source
<a name="data-transformation-source-record-backup"></a>

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.