

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Transformação de dados da fonte no Amazon Data Firehose
<a name="data-transformation"></a>

O Amazon Data Firehose pode invocar a função do Lambda para transformar os dados da fonte de entrada e entregar os dados transformados aos destinos. É possível habilitar a transformação de dados do Amazon Data Firehose ao criar o fluxo do Firehose.

## Noções básicas sobre o fluxo de transformação de dados
<a name="data-transformation-flow"></a>

Quando você habilita a transformação de dados do Firehose, ele armazena os dados recebidos em buffer. A sugestão de tamanho para armazenamento em buffer varia de 0,2 MB a 3 MB. A sugestão de tamanho para armazenamento em buffer padrão do Lambda é de 1 MB para todos os destinos, exceto o Splunk e o Snowflake. Para o Splunk e o Snowflake, a sugestão de armazenando em buffer padrão é de 256 KB. A sugestão de intervalo de armazenamento em buffer do Lambda varia entre 0 e 900 segundos. A sugestão de intervalo de armazenamento buffer padrão do Lambda é de sessenta segundos para todos os destinos, exceto o Snowflake. Para o Snowflake, a sugestão de intervalo de armazenando em buffer padrão é de 30 segundos. Para ajustar o tamanho do buffer, defina o [ProcessingConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessingConfiguration.html)parâmetro da [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)ou com o [ProcessorParameter](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ProcessorParameter.html)chamado e. `BufferSizeInMBs` `IntervalInSeconds` O Firehose então invoca a função Lambda especificada de forma síncrona com cada lote armazenado em buffer usando o modo de invocação síncrona. AWS Lambda Os dados transformados são enviados do Lambda para o Firehose. Em seguida, o Firehose os envia o para o destino quando o tamanho ou o intervalo de buffer de destino especificado é atingido, o que acontecer primeiro.

**Importante**  
O modo de invocação síncrona do Lambda tem um limite de tamanho de carga útil de 6 MB para ambas a solicitação e a resposta. Certifique-se de que o tamanho do armazenamento em buffer para envio da solicitação para a função seja menor que ou igual a 6 MB. Além disso, verifique se a resposta que sua função retorna não excede 6 MB.

## Duração da invocação do Lambda
<a name="data-transformation-execution-duration"></a>

O Amazon Data Firehose oferece suporte a um tempo de invocação do Lambda de até 5 minutos. Se sua função do Lambda levar mais de 5 minutos para ser concluída, você receberá o seguinte erro: O Firehose encontrou erros de tempo limite ao chamar o Lambda. AWS O tempo limite máximo da função é de 5 minutos.

Para obter informações sobre o que o Amazon Data Firehose faz se esse erro ocorrer, consulte [Como lidar com falhas na transformação de dados](data-transformation-failure-handling.md).

# Parâmetros necessários para transformação de dados
<a name="data-transformation-status-model"></a>

Todos os registros transformados do Lambda devem conter os parâmetros a seguir. Caso contrário, o Amazon Data Firehose os rejeitará e tratará esse evento como uma falha na transformação de dados.

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

Os parâmetros a seguir são necessários para todos os registros transformados do Lambda.
+ `recordId`: o ID do registro é transmitido do Amazon Data Firehose para o Lambda durante a invocação. O registro transformado deve conter o mesmo ID de registro. Qualquer incompatibilidade entre o ID do registro original e o ID do registro transformado é considerada uma falha na transformação de dados.
+ `result`: o status da transformação de dados do registro. Os valores possíveis são: `Ok` (o registro foi transformado com êxito), `Dropped` (o registro foi removido intencionalmente pela lógica de processamento), e `ProcessingFailed` (não foi possível transformar o registro). Se um registro tiver um status de `Ok` ou `Dropped`, o Amazon Data Firehose considerará o processamento com êxito. Caso contrário, o Amazon Data Firehose considerará que o processamento do registro não teve êxito.
+ `data`: a carga útil dos dados transformados, após a codificação base64.

  Este é um exemplo de saída de resultados do Lambda:

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

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

Os parâmetros a seguir são necessários para todos os registros transformados do Lambda.
+ `recordId`: o ID do registro é transmitido do Firehose para o Lambda durante a invocação. O registro transformado deve conter o mesmo ID de registro. Qualquer incompatibilidade entre o ID do registro original e o ID do registro transformado é considerada uma falha na transformação de dados.
+ `result`: o status da transformação de dados do registro. Os valores possíveis são: `Ok` (o registro foi transformado com êxito), `Dropped` (o registro foi removido intencionalmente pela lógica de processamento), e `ProcessingFailed` (não foi possível transformar o registro). Se um registro tiver o status `Ok` ou `Dropped`, o Firehose considerará que processamento teve êxito. Caso contrário, o Firehose considerará que o processamento do registro não teve êxito.
+ `KafkaRecordValue`: a carga útil dos dados transformados, após a codificação base64.

  Este é um exemplo de saída de resultados do Lambda:

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

------

# Esquemas do Lambda com suporte
<a name="lambda-blueprints"></a>

Esses esquemas demonstram como você pode criar e usar funções AWS Lambda para transformar dados em seus fluxos de dados do Amazon Data Firehose. 

**Para ver as plantas que estão disponíveis no console AWS Lambda**

1. Faça login no Console de gerenciamento da AWS e abra o AWS Lambda console em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Selecione **Create function (Criar função)** e **Use a blueprint (Usar um esquema)**.

1. No campo **Esquemas**, procure a palavra-chave `firehose` para encontrar os esquemas do Lambda do Amazon Data Firehose.

Lista de esquemas:
+ **Processamento de registros enviados para o fluxo do Amazon Data Firehose (Node.js, Python)**

  Este esquema mostra um exemplo básico de como processar dados em seu stream de dados do Firehose usando AWS o Lambda. 

  *Data da versão mais recente:* novembro de 2016. 

  *Notas da versão:* nenhuma.
+ ** CloudWatch Registros do processo enviados para o Firehose**

  Esse blueprint está obsoleto. Não use esse esquema. Isso pode gerar altas cobranças quando os dados de CloudWatch registros descompactados tiverem mais de 6 MB (limite Lambda). Para obter informações sobre o processamento de CloudWatch registros enviados para o Firehose, consulte [Gravando no Firehose usando](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html) registros. CloudWatch 
+ **Conversão de registros de fluxo do Amazon Data Firehose no formato syslog para JSON (Node.js)**

  Este esquema mostra como você pode converter registros de entrada no formato RFC3164 Syslog em JSON. 

  *Data da versão mais recente:* novembro de 2016. 

  *Notas da versão:* nenhuma. 

**Para ver as plantas que estão disponíveis no AWS Serverless Application Repository**

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

1. Escolha **Procurar todas as aplicações**.

1. No campo **Aplicações**, procure a palavra-chave `firehose`.

Também é possível criar uma função do Lambda sem usar um esquema. Consulte [Introdução ao AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html).

# Como lidar com falhas na transformação de dados
<a name="data-transformation-failure-handling"></a>

Se a invocação da função do Lambda falhar devido ao tempo limite da rede ou porque você atingiu o limite de invocações do Lambda, o Amazon Data Firehose repetirá a invocação três vezes, por padrão. Se a invocação não tiver êxito, o Amazon Data Firehose ignorará esse lote de registros. Os registros ignorados são tratados como registros com falha no processamento. Você pode especificar ou substituir as opções de nova tentativa usando a API [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)ou`[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)`. Para esse tipo de falha, você pode registrar erros de invocação no Amazon CloudWatch Logs. Para obter mais informações, consulte [Monitore o Amazon Data Firehose usando registros CloudWatch](monitoring-with-cloudwatch-logs.md).

Se o status da transformação de dados de um registro for `ProcessingFailed`, o Amazon Data Firehose considerará que houve falha no processamento do registro. Para esse tipo de falha, você pode emitir registros de erro para o Amazon CloudWatch Logs a partir da sua função Lambda. Para obter mais informações, consulte [Como acessar o Amazon CloudWatch Logs AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html) no *Guia do AWS Lambda desenvolvedor*.

Se uma transformação de dados apresentar falha, os registros com falha de processamento serão entregues ao bucket do S3 na pasta `processing-failed`. Os registros têm o seguinte formato:

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

`attemptsMade`  
O número de tentativas de solicitações de invocação.

`arrivalTimestamp`  
A hora em que o registro foi recebido pelo Amazon Data Firehose.

`errorCode`  
O código de erro de HTTP retornado pelo Lambda.

`errorMessage`  
A mensagem de erro retornada pelo Lambda.

`attemptEndingTimestamp`  
O momento em que o Amazon Data Firehose parou de tentar as invocações do Lambda.

`rawData`  
Os dados de registro com codificação base64.

`lambdaArn`  
O nome do recurso da Amazon (ARN) da função do Lambda.

# Backup de registros da fonte
<a name="data-transformation-source-record-backup"></a>

O Amazon Data Firehose pode fazer backup de todos os registros não transformados no bucket do S3 simultaneamente enquanto entrega os registros transformados ao destino. É possível habilitar o período de retenção de backup de registro da fonte ao criar ou atualizar seu fluxo do Firehose. Não é possível desabilitar o período de retenção de backup do registro de origem após habilitá-lo.