Como o Lambda processa registros de origens de eventos baseadas em fluxos e filas
Um mapeamento de origem de evento é um recurso no Lambda que lê itens de serviços baseados em fluxo ou fila e invoca uma função com lotes de registros. Os serviços a seguir usam mapeamentos de origem de eventos para invocar funções do Lambda:
Atenção
Os mapeamentos da origem do evento do Lambda processam cada evento ao menos uma vez, podendo haver o processamento duplicado de registros. Para evitar possíveis problemas relacionados a eventos duplicados, é altamente recomendável tornar o código da função idempotente. Para saber mais, consulte Como tornar minha função do Lambda idempotente
Como os mapeamentos de origem de eventos diferem dos acionadores diretos
Alguns serviços da AWS podem invocar diretamente as funções do Lambda usando acionadores. Esses serviços enviam eventos para o Lambda, e a função é invocada imediatamente quando o evento especificado ocorre. Os acionadores são adequados para eventos discretos e processamento em tempo real. Quando você cria um acionador usando o console do Lambda, o console interage com o serviço da AWS correspondente para configurar a notificação de eventos nesse serviço. Na verdade, o acionador é armazenado e gerenciado pelo serviço que gera os eventos, não pelo Lambda. Aqui estão alguns exemplos de serviços que usam acionadores para invocar funções do Lambda:
-
Amazon Simple Storage Service (Amazon S3): invoca uma função quando um objeto é criado, excluído ou modificado em um bucket. Para ter mais informações, consulte Tutorial: Usar um acionador do Amazon S3 para invocar uma função do Lambda.
-
Amazon Simple Notification Service (Amazon SNS): invoca uma função quando uma mensagem é publicada em um tópico do SNS. Para ter mais informações, consulte Como usar oAWS LambdaCom o Amazon Simple Notification Service.
-
Amazon API Gateway: invoca uma função quando uma solicitação de API é feita para um endpoint específico. Para ter mais informações, consulte Invocar uma função do Lambda usando um endpoint do Amazon API Gateway.
Os mapeamentos de origem de eventos são recursos do Lambda criados e gerenciados dentro do serviço do Lambda. Os mapeamentos de origem de eventos são projetados para processar dados de streaming de alto volume ou mensagens de filas. O processamento de registros de um fluxo ou fila em lotes é mais eficiente do que processar registros individualmente.
Comportamento de lotes
Por padrão, um mapeamento de fonte de evento registra em lotes em uma única carga útil que o Lambda envia para sua função. Para ajustar o comportamento de lotes, configure uma janela de lotes (MaximumBatchingWindowInSeconds) e um tamanho de lote (BatchSize). A janela de lote é o tempo máximo para reunir registros em uma única carga útil. O tamanho de lote é o número máximo de registros em um único lote. O Lambda invoca a função quando um destes três critérios é atendido:
-
A janela de lotes atinge o valor máximo. O comportamento padrão da janela de lote varia conforme a fonte de evento específica.
Para fontes de eventos do Kinesis, do DynamoDB e do Amazon SQS: a janela de lote padrão é 0 segundo. Isso significa que o Lambda envia lotes para sua função somente quando o tamanho do lote é atingido ou o limite de tamanho da carga útil é atingido. Para definir uma janela de lotes, configure
MaximumBatchingWindowInSeconds
. É possível configurar esse parâmetro para qualquer valor de 0 a 300 segundos em incrementos de 1 segundo. Se você configurar uma janela de lote, a próxima janela começará assim que a invocação de função anterior for concluída.Para origens do evento do Amazon MSK, Apache Kafka autogerenciado, Amazon MQ e Amazon DocumentDB: a janela em lotes padrão é de 500 ms. É possível configurar
MaximumBatchingWindowInSeconds
para qualquer valor de 0 a 300 segundos em incrementos de segundos. A janela de lotes começa assim que o primeiro registro chega.nota
Como só é possível alterar
MaximumBatchingWindowInSeconds
em incrementos de segundos, você não pode reverter para a janela de lotes padrão de 500 ms após alterá-la. Para restaurar a janela de lotes padrão, é necessário criar um novo mapeamento de fonte de evento.
-
O tamanho do lote é atendido. O tamanho mínimo do lote é 1. O tamanho do lote padrão e máximo dependem da fonte de eventos. Para obter detalhes sobre esses valores, consulte a especificação de BatchSize para a operação da API
CreateEventSourceMapping
. -
O tamanho da carga útil atinge 6 MB. Não é possível modificar esse limite.
O diagrama a seguir ilustra essas três condições. Suponha que uma janela de lotes comece em t = 7
segundos. No primeiro caso, a janela de lotes atinge seu máximo de 40 segundos em t = 47
segundos após acumular cinco registros. No segundo caso, como o tamanho do lote chega a dez antes que a janela de lotes expire, a janela de lotes é encerrada mais cedo. No terceiro caso, como o tamanho máximo da carga útil é atingido antes que a janela de lotes expire, a janela de lotes é encerrada mais cedo.
API do mapeamento da fonte de eventos
Para gerenciar uma fonte de eventos com a AWS Command Line Interface (AWS CLI) ou um AWS SDK