Transformação de dados do Amazon Data Firehose - Amazon Data Firehose

O Amazon Data Firehose era conhecido anteriormente como Amazon Kinesis Data Firehose

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 do Amazon Data Firehose

O Amazon Data Firehose pode invocar sua função Lambda para transformar os dados de origem recebidos e entregar os dados transformados aos destinos. Você pode ativar a transformação de dados do Amazon Data Firehose ao criar seu stream do Firehose.

Fluxo de transformação de dados

Quando você ativa a transformação de dados do Firehose, o Firehose armazena os dados recebidos em buffer. A dica de tamanho do buffer varia entre 0,2 MB e 3 MB. A dica padrão do tamanho do buffer do Lambda é de 1 MB para todos os destinos, exceto Splunk e Snowflake. Para Splunk e Snowflake, a dica de buffer padrão é 256 KB. A dica de intervalo de buffer do Lambda varia entre 0 e 900 segundos. A dica padrão de intervalo de buffer do Lambda é de sessenta segundos para todos os destinos, exceto o Snowflake. Para o Snowflake, o intervalo padrão de dica de buffer é de 30 segundos. Para ajustar o tamanho do buffer, defina o ProcessingConfigurationparâmetro da UpdateDestinationAPI CreateDeliveryStreamou com o ProcessorParameterchamado e. BufferSizeInMBs IntervalInSeconds Em seguida, o Firehose invoca a função Lambda especificada de forma assí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. O Firehose então o envia para o destino quando o tamanho do buffer de destino especificado ou o intervalo de buffer é atingido, o que ocorrer 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.

Transformação de dados e modelo de status

Todos os registros transformados do Lambda devem conter os seguintes parâmetros, ou o Amazon Data Firehose os rejeitará e tratará isso como uma falha na transformação de dados.

Para o Kinesis Data Streams e o Direct PUT:

recordId

O ID do registro é passado 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.

resultado

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 ouDropped, o Amazon Data Firehose o considerará processado com sucesso. Caso contrário, o Amazon Data Firehose o considera processado sem sucesso.

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>" }

Para o Amazon MSK

recordId

O ID do registro é passado 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.

resultado

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 ouDropped, o Firehose o considerará processado com sucesso. Caso contrário, o Firehose o considera processado sem sucesso.

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>" }

Esquema do Lambda

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 AWS Management Console e abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

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

  3. No campo Blueprints, pesquise a palavra-chave firehose para encontrar os blueprints Lambda do Amazon Data Firehose.

Lista de esquemas:

  • Processar registros enviados para o stream 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. Para obter informações sobre o processamento de CloudWatch registros enviados para o Firehose, consulte Gravando no Firehose usando registros. CloudWatch

  • Converta registros de stream do Amazon Data Firehose no formato syslog em JSON (Node.js)

    Este esquema mostra como você pode converter os 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.

  2. Escolha Procurar todas as aplicações.

  3. No campo Applications (Aplicativos) 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.

Tratamento de falhas de transformação de dados

Se a invocação da função Lambda falhar devido a um tempo limite de rede ou porque você atingiu o limite de invocação do Lambda, o Amazon Data Firehose repetirá a invocação três vezes por padrão. Se a invocação não for bem-sucedida, 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 CreateDeliveryStreamouUpdateDestination. Para esse tipo de falha, você pode registrar erros de invocação no Amazon CloudWatch Logs. Para ter mais informações, consulte Monitorando o Amazon Data Firehose usando registros CloudWatch .

Se o status da transformação de dados de um registro forProcessingFailed, o Amazon Data Firehose tratará o registro como processado sem sucesso. 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 no Guia doAWS Lambda desenvolvedor.

Se a 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

A vez em que o Amazon Data Firehose parou de tentar 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.

Duração de uma invocação do Lambda

O Amazon Data Firehose suporta 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 fará se esse erro ocorrer, consulte. Tratamento de falhas de transformação de dados

Período de retenção de backup do registro de origem

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