

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Transformación de los datos de origen en Amazon Data Firehose
<a name="data-transformation"></a>

Amazon Data Firehose puede invocar su función de Lambda para transformar los datos de entrada de origen y entregarlos transformados en sus destinos. Puede habilitar la transformación de datos de Amazon Data Firehose al crear el flujo de Firehose.

## Comprenda el flujo de transformación de datos
<a name="data-transformation-flow"></a>

Al habilitar la transformación de datos de Firehose, Firehose almacena en búfer los datos de entrada. La sugerencia de tamaño del búfer oscila entre 0,2 MB y 3 MB. La sugerencia de tamaño del búfer de Lambda predeterminado es de 1 MB para todos los destinos, excepto Splunk y Snowflake. Para Splunk y Snowflake, la sugerencia de almacenamiento en búfer predeterminado es de 256 KB. La sugerencia del intervalo de almacenamiento en búfer de Lambda oscila entre 0 y 900 segundos. La sugerencia de intervalo de almacenamiento en búfer de Lambda predeterminado es de sesenta segundos para todos los destinos, excepto Snowflake. Para Snowflake, la sugerencia del intervalo de almacenamiento en búfer predeterminado es de 30 segundos. Para ajustar el tamaño del búfer, defina el [ProcessingConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessingConfiguration.html)parámetro de la [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)o con la [ProcessorParameter](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessorParameter.html)llamada `BufferSizeInMBs` y. `IntervalInSeconds` A continuación, Firehose invoca la función Lambda especificada de forma sincrónica con cada lote almacenado en búfer mediante el modo de invocación sincrónica. AWS Lambda Los datos transformados se envían de Lambda a Firehose. A continuación, Firehose envía esos datos al destino cuando se alcanza en el destino el tamaño de almacenamiento en búfer o el intervalo de almacenamiento en búfer especificado (lo que ocurra primero).

**importante**  
El modo de invocación sincrónica de Lambda tiene un límite de tamaño de carga de 6 MB para la solicitud y la respuesta. Asegúrese de que el tamaño de almacenamiento en búfer para enviar la solicitud a la función es inferior o igual a 6 MB. Asegúrese también de que la respuesta devuelta por la función no sea superior a 6 MB.

## Duración de la invocación de Lambda
<a name="data-transformation-execution-duration"></a>

Amazon Data Firehose admite un tiempo de invocación a Lambda de hasta 5 minutos. Si la función Lambda tarda más de 5 minutos en completarse, aparece el siguiente error: Firehose detectó errores de tiempo de espera al llamar a Lambda. AWS The maximum supported function timeout is 5 minutes.

Para obtener información sobre lo que hace Amazon Data Firehose si se produce un error como este, consulte [Gestión de los errores en la transformación de datos](data-transformation-failure-handling.md).

# Parámetros necesarios para la transformación de datos
<a name="data-transformation-status-model"></a>

Todos los registros transformados de Lambda deben contener los siguientes parámetros. De lo contrario, Amazon Data Firehose los rechaza y los trata como errores de transformación de datos.

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

Se requieren los siguientes parámetros para todos los registros transformados de Lambda.
+ `recordId` – El ID de registro se transfiere de Amazon Data Firehose a Lambda durante la invocación. El registro transformado debe contener el mismo ID de registro. Cualquier discrepancia entre el ID del registro original y el del transformado se trata como un error de transformación de datos.
+ `result` – Es el estado de la transformación de los datos del registro. Los valores posibles son `Ok` si el registro se ha transformado correctamente, `Dropped` si la lógica de procesamiento ha omitido el registro intencionadamente y `ProcessingFailed` si el registro no se ha podido transformar. Si un registro tiene el estado `Ok` o `Dropped`, Amazon Data Firehose considera que se ha procesado correctamente. De lo contrario, Amazon Data Firehose considerará que no se ha procesado correctamente.
+ `data` – Es la carga útil de datos transformados después codificarlos en base64.

  A continuación se presenta un ejemplo de salida de Lambda:

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

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

Se requieren los siguientes parámetros para todos los registros transformados de Lambda.
+ `recordId` – El ID de registro se transfiere desde Firehose hacia Lambda durante la invocación. El registro transformado debe contener el mismo ID de registro. Cualquier discrepancia entre el ID del registro original y el del transformado se trata como un error de transformación de datos.
+ `result` – Es el estado de la transformación de los datos del registro. Los valores posibles son `Ok` si el registro se ha transformado correctamente, `Dropped` si la lógica de procesamiento ha omitido el registro intencionadamente y `ProcessingFailed` si el registro no se ha podido transformar. Si un registro tiene el estado `Ok` o `Dropped`, Firehose considera que se ha procesado correctamente. De lo contrario, Firehose considerará que no se ha procesado correctamente.
+ `KafkaRecordValue` – Es la carga útil de datos transformados después codificarlos en base64.

  A continuación se presenta un ejemplo de salida de Lambda:

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

------

# Esquemas de Lambda compatibles
<a name="lambda-blueprints"></a>

Estos planos muestran cómo puede crear y utilizar funciones de AWS Lambda para transformar los datos de las transmisiones de datos de Amazon Data Firehose. 

**Para ver los planos que están disponibles en la consola AWS Lambda**

1. Inicie sesión en Consola de administración de AWS y abra la AWS Lambda consola en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Elija **Create function (Crear función)** y, a continuación, elija **Use a blueprint (Utilizar un proyecto)**.

1. En el campo **Blueprints (Esquemas)**, busque la palabra clave `firehose` para encontrar los esquemas de Lambda de Amazon Data Firehose.

Lista de esquemas:
+ **Procesar registros enviados al flujo de Amazon Data Firehose (Node.js, Python)**

  Este plano muestra un ejemplo básico de cómo procesar los datos del flujo de datos de Firehose con AWS Lambda. 

  *Fecha de lanzamiento más reciente:* noviembre de 2016. 

  *Notas de la versión:* ninguna.
+ ** CloudWatch Registros del proceso enviados a Firehose**

  Este esquema está obsoleto. No utilice este esquema. Puede incurrir en cargos elevados cuando los datos de CloudWatch Logs descomprimidos superen los 6 MB (límite Lambda). Para obtener información sobre el procesamiento de CloudWatch los registros enviados a Firehose, consulte Cómo [escribir en Firehose mediante](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html) registros. CloudWatch 
+ **Convertir los registros de flujos de Amazon Data Firehose en formato syslog en JSON (Node.js)**

  Este esquema muestra cómo convertir los registros de entrada en formato RFC3164 Syslog a JSON. 

  *Fecha de lanzamiento más reciente:* noviembre de 2016. 

  *Notas de la versión:* ninguna. 

**Para ver los planos que están disponibles en la AWS Serverless Application Repository**

1. Vaya a [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo).

1. Elija **Examinar todas las aplicaciones**.

1. En el campo **Applications (Aplicaciones)** busque la palabra clave `firehose`.

También puede crear una función de Lambda sin utilizar un esquema. Consulte [Introducción a AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

# Gestión de los errores en la transformación de datos
<a name="data-transformation-failure-handling"></a>

Si se produce un error al invocar la función de Lambda por un tiempo de espera de red o porque se ha alcanzado el límite de invocaciones de Lambda, Amazon Data Firehose intenta realizar dicha invocación tres veces más de forma predeterminada. Si la invocación no se realiza correctamente, Amazon Data Firehose omite ese lote de registros. los trata como registros que no se han podido procesar. Puede especificar o anular las opciones de reintento mediante la [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)API o. `[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)` Para este tipo de error, puede registrar los errores de invocación en Amazon CloudWatch Logs. Para obtener más información, consulte [Supervise Amazon Data Firehose mediante registros CloudWatch](monitoring-with-cloudwatch-logs.md).

Si el estado de la transformación de datos de un registro es `ProcessingFailed`, Amazon Data Firehose lo trata como un registro que no ha podido procesarse correctamente. Para este tipo de error, puede enviar registros de errores a Amazon CloudWatch Logs desde su función Lambda. Para obtener más información, consulte [Acceder a Amazon CloudWatch Logs AWS Lambda en la Guía para AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html) *desarrolladores*.

Si ocurre un error durante la transformación de datos, los registros que no se hayan podido procesar se entregan en el bucket de S3, en la carpeta `processing-failed`. Los registros tienen el siguiente formato:

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

`attemptsMade`  
La cantidad de intentos de solicitud de invocación.

`arrivalTimestamp`  
Hora a la que Amazon Data Firehose recibió el registro.

`errorCode`  
Código de error HTTP devuelto por Lambda.

`errorMessage`  
Mensaje de error HTTP devuelto Lambda.

`attemptEndingTimestamp`  
Hora a la que Amazon Data Firehose dejó de intentar las invocaciones de Lambda.

`rawData`  
Los datos de registros codificados en base64.

`lambdaArn`  
El nombre de recurso de Amazon (ARN) de la función de Lambda.

# Copia de seguridad de registros de origen
<a name="data-transformation-source-record-backup"></a>

Amazon Data Firehose puede hacer una copia de seguridad de todos los registros no transformados en su bucket de S3 a la vez que entrega los registros transformados en su destino. Puede habilitar la copia de seguridad de registros de origen al crear o actualizar el flujo de Firehose. El backup de los registros de origen no se puede deshabilitar después de haberlo habilitado.