Como usar a função do Lambda como saída - Guia do desenvolvedor do Amazon Kinesis Data Analytics SQL para aplicativos

Para novos projetos, recomendamos que você use o novo Managed Service para Apache Flink Studio em vez do Kinesis Data Analytics for Applications. SQL O Managed Service for Apache Flink Studio combina facilidade de uso com recursos analíticos avançados, permitindo que você crie aplicativos sofisticados de processamento de stream em minutos.

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á.

Como usar a função do Lambda como saída

Usar AWS Lambda como destino permite que você realize mais facilmente o pós-processamento de seus resultados de SQL antes de enviá-los para um destino final. Algumas tarefas comuns de pós-processamento são:

  • Agregação de várias linhas em um único registro

  • Combinação de resultados atuais com resultados passados para o tratamento de dados retardatários

  • Entrega em destinos diferentes com base no tipo de informações

  • Conversão do formato de registros (como a conversão para Protobuf)

  • Manipulação ou transformação de strings

  • Enriquecimento de dados após o processamento analítico

  • Processamento personalizado para casos de uso geoespacial

  • Criptografia de dados

As funções Lambda podem fornecer informações analíticas para uma variedade de AWS serviços e outros destinos, incluindo os seguintes:

Para obter mais informações sobre como criar aplicativos do Lambda, consulte Conceitos básicos do AWS Lambda.

Permissões para o Lambda como saída

Para usar o Lambda como saída, o perfil do IAM de saída do Lambda do aplicativo requer a seguinte política de permissões:

{ "Sid": "UseLambdaFunction", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": "FunctionARN" }

Lambda como métrica de saída

Você usa CloudWatch a Amazon para monitorar o número de bytes enviados, sucessos e falhas, e assim por diante. Para obter informações sobre CloudWatch métricas emitidas pelo Kinesis Data Analytics usando o Lambda como saída, consulte Métricas do Amazon Kinesis Analytics.

Modelo de dados de entrada de eventos de saída do Lambda e modelo de resposta de registros

Para enviar registros de saída do Kinesis Data Analytics, sua função do Lambda precisa ser compatível com os modelos de dados de entrada de eventos e modelos de resposta de registros exigidos.

Modelo de dados de entrada de eventos

O Kinesis Data Analytics envia continuamente os registros de saída do aplicativo para o Lambda como uma função de saída com o seguinte modelo de solicitação. Dentro da função, você percorre a lista e aplica a lógica de negócios para cumprir os requisitos de saída (como a transformação dos dados antes de enviá-los para um destino final).

Campo Descrição
invocationId ID de invocação do Lambda (GUID aleatório)
applicationArn O nome do recurso da Amazon (ARN) do aplicativo Kinesis Data Analytics
registros
Campo Descrição
recordId ID de registro (GUID aleatório)
lambdaDeliveryRecordMetadata
Campo Descrição
retryHint Número de novas tentativas de entrega
data Carga útil de registros de saída codificada em Base64
nota

O retryHint é um valor que aumenta a cada falha de entrega. Esse valor não é mantido permanentemente, e será redefinido se o aplicativo for interrompido.

Modelo de resposta de registros

Cada registro enviado para o Lambda como uma função de saída (com IDs de registro) deve ser reconhecido com Ok ou DeliveryFailed, e deve conter os seguintes parâmetros. Caso contrário, o Kinesis Data Analytics os tratará como uma falha de entrega.

registros
Campo Descrição
recordId O ID do registro é transmitido do Kinesis Data Analytics para o Lambda durante a invocação. Qualquer discrepância entre o ID do registro original e o ID do registro reconhecido é considerada como uma falha de entrega.
result O status da entrega do registro. Os valores possíveis são:
  • Ok: o registro foi transformado com êxito e enviado para o destino final. O Kinesis Data Analytics ingere o registro para processamento de SQL.

  • DeliveryFailed: o registro não foi entregue ao destino final pelo Lambda como função de saída. O Kinesis Data Analytics faz continuamente novas tentativas de entrega dos registros com falha para o Lambda como função de saída.

Frequência de invocação de saída do Lambda

Um aplicativo Kinesis Data Analytics armazena os registros de saída em buffers e invoca a função de destino do AWS Lambda com frequência.

  • Se os registros forem emitidos para o fluxo de destino no aplicativo de análise de dados como uma janela suspensa, a função de AWS Lambda destino será invocada por gatilho da janela intermitente. Por exemplo, se uma janela em cascata de 60 segundos é usada para emitir os registros para o fluxo no aplicativo de destino, a função do Lambda é invocada uma vez a cada 60 segundos.

  • Se os registros são emitidos para o fluxo no aplicativo de destino dentro do aplicativo como uma consulta contínua ou uma janela deslizante, a função de destino do Lambda é invocada aproximadamente uma vez por segundo.

nota

Os limites de tamanho da carga de solicitação por cada invocação da função do Lambda se aplicam. Exceder esses limites resulta em registros de saída divididos e enviados em várias chamadas da função do Lambda.

Adição de uma função do Lambda para usar como uma saída

O procedimento a seguir demonstra como adicionar uma função do Lambda como saída em um aplicativo Kinesis Data Analytics.

  1. Faça login AWS Management Console e abra o console do Managed Service for Apache Flink em https://console.aws.amazon.com/kinesisanalytics.

  2. Escolha o aplicativo na lista e, em seguida, escolha Application details.

  3. Na seção Destination, escolha Connect new destination.

  4. Para o item Destination (Destino), escolha Function (Função do)AWS Lambda .

  5. Na seção Entregar registros para AWS Lambda, escolha uma função e versão existentes do Lambda ou selecione Criar novo.

  6. Se você estiver criando uma nova função do Lambda, faça o seguinte:

    1. Escolha um dos modelos fornecidos. Para obter mais informações, Como criar funções do Lambda para destinos de aplicativos.

    2. A página Create Function (Criar função) é aberta em uma nova guia do navegador. Na caixa Name (Nome), atribua um nome significativo à função (por exemplo, myLambdaFunction).

    3. Atualize o modelo com a funcionalidade de pós-processamento para o seu aplicativo. Para obter informações sobre como criar uma função do Lambda, consulte Conceitos básicos no Guia do desenvolvedor doAWS Lambda .

    4. No console do Kinesis Data Analytics, na lista de funções do Lambda, escolha a função do Lambda que você acabou de criar. Selecione $LATEST para a versão da função do Lambda.

  7. Na seção In-application stream, escolha Choose an existing in-application stream. Em In-application stream name, escolha o fluxo de saída do seu aplicativo. Os resultados do fluxo de saída selecionado são enviadas para a função de saída do Lambda.

  8. Deixe o restante do formulário com os valores padrão e escolha Save and continue.

O aplicativo agora envia registros do fluxo do aplicativo para a sua função do Lambda. Você pode ver os resultados do modelo padrão no CloudWatch console da Amazon. Monitore a métrica AWS/KinesisAnalytics/LambdaDelivery.OkRecords para ver o número de registros que estão sendo entregues à função do Lambda.

Falhas comuns de Lambda como saída

Veja a seguir os motivos comuns pelos quais a entrega a uma função do Lambda pode falhar.

  • Nem todos os registros (com IDs de registro) em um lote que são enviados para a função do Lambda são retornados para o serviço do Kinesis Data Analytics.

  • A resposta não tem o ID do registro ou o campo de status.

  • Os tempos limite da função do Lambda não são suficientes para executar a lógica de negócios na função do Lambda.

  • A lógica de negócios da função do Lambda não detecta todos os erros, o que resulta na extrapolação do tempo limite e em uma pressão contrária devido à ocorrência de exceções não processadas. Essas são geralmente conhecidas como mensagens "poison pill".

Para falhas de entrega, o Kinesis Data Analytics continua a fazer novas tentativas de invocação do Lambda para o mesmo conjunto de registros até que tenha êxito. Para obter informações sobre falhas, você pode monitorar as seguintes CloudWatch métricas:

  • Lambda do aplicativo Kinesis Data Analytics como métricas CloudWatch de saída: indica o número de sucessos e falhas, entre outras estatísticas. Para obter mais informações, consulte Métricas do Amazon Kinesis Analytics.

  • AWS Lambda CloudWatch métricas e registros de funções.