Criar e configurar um mapeamento de origem de evento do Amazon SQS - AWS Lambda

Criar e configurar um mapeamento de origem de evento do Amazon SQS

Para processar mensagens do Amazon SQS com o Lambda, configure sua fila com as configurações apropriadas e, em seguida, crie um mapeamento de origem de evento do Lambda.

Configurar uma fila para usar com o Lambda

Se você ainda não tiver uma fila do Amazon SQS, crie uma para servir como uma origem de eventos para a sua função do Lambda. Depois, configure a fila para permitir que a sua função do Lambda processe cada lote de eventos.

Para permitir que a função tenha tempo para processar cada lote de registros, defina o tempo limite de visibilidade da fila de origem para, no mínimo, seis vezes o tempo limite da configuração na sua função. Esse tempo extra permite que o Lambda repita o processo se a execução da sua função for limitada durante o processamento de um lote anterior.

Por padrão, se o Lambda se deparar com um erro em algum momento durante o processamento de um lote, todas as mensagens naquele lote retornarão para a fila. Após o tempo limite de visibilidade, as mensagens se tornam visíveis para o Lambda novamente. Você pode configurar o mapeamento de origem de evento para usar respostas parciais em lote para recolocar na fila somente as mensagens com falha. Além disso, se a sua função não conseguir processar uma mensagem várias vezes, o Amazon SQS poderá enviá-la para uma fila de mensagens não entregues. Recomendamos definir a maxReceiveCount na política de redirecionamento da fila de origem para pelo menos 5. Isso dá ao Lambda algumas chances de tentar novamente antes de enviar mensagens com falha diretamente para a fila de mensagens não entregues.

Configurar permissões do perfil de execução do Lambda

A política gerenciada pela AWS AWSLambdaSQSQueueExecutionRole inclui as permissões necessárias para o Lambda ler da sua fila do Amazon SQS. Você pode adicionar essa política gerenciada ao perfil de execução da função.

Opcionalmente, se você estiver usando uma fila criptografada, também precisará adicionar a seguinte permissão à sua função de execução:

Criar um mapeamento de origem de evento do SQS

Crie um mapeamento de fontes de eventos para orientar o Lambda a enviar itens da sua fila para uma função do Lambda. Você pode criar vários mapeamentos da fonte do evento para processar itens de várias filas com uma única função. Quando o Lambda invoca a função de destino, o evento pode conter vários itens, até um tamanho de lote máximo configurável.

Para configurar sua função para ler do Amazon SQS, associe a política gerenciada pela AWS AWSLambdaSQSQueueExecutionRole ao seu perfil de execução. Em seguida, crie um mapeamento de origem de evento do SQS via console usando as etapas a seguir.

Para adicionar permissões e criar um acionador
  1. Abra a página Funções do console do Lambda.

  2. Escolha o nome de uma função.

  3. Escolha a guia Configuration (Configuração) e, depois, Permissions (Permissões).

  4. Em Nome do perfil, escolha o link para seu perfil de execução. Esse link abre o perfil no console do IAM.

    Link para perfil de execução
  5. Escolha Adicionar permissões e depois Anexar políticas.

    Associar políticas no console do IAM
  6. No campo de pesquisa, digite AWSLambdaSQSQueueExecutionRole. Adicione esta política ao seu perfil de execução Essa é uma política gerenciada pela AWS que contém as permissões que sua função precisa para ler de uma fila do Amazon SQS. Para obter mais informações sobre essa política, consulte AWSLambdaSQSQueueExecutionRole na Referência de políticas gerenciadas pela AWS.

  7. Volte para a sua função no console do Lambda Em Visão geral da função, escolha Adicionar gatilho.

    Seção de visão geral da função do console do Lambda
  8. Escolha um tipo de acionador.

  9. Configure as opções necessárias e escolha Add (Adicionar).

O Lambda oferece suporte às seguintes opções de configuração para origens de eventos do Amazon SQS:

Fila do SQS

A fila do Amazon SQS de onde os registros serão lidos.

Habilitar acionador

O status do mapeamento da origem do evento. Enable trigger (Habilitar acionador) está selecionado por padrão.

Tamanho do lote

O número máximo de registros a serem enviados para a função em cada lote. Em uma fila padrão, isso pode ser até 10.000 registros. Em uma fila FIFO, o máximo é 10. Para um tamanho de lote acima de dez, você também deve definir a janela do lote (MaximumBatchingWindowInSeconds) para, no mínimo, um segundo.

Configure o tempo limite da função para permitir tempo suficiente para o processamento de um lote inteiro de itens. Se os itens levarem muito tempo para serem processados, escolha um tamanho de lote menor. Um tamanho de lote grande pode melhorar a eficiência de cargas de trabalho muito rápidas ou com muita sobrecarga. Se você configurar a simultaneidade reservada na sua função, defina pelo menos cinco execuções simultâneas para reduzir as chances de erros de controle de utilização quando o Lambda invocar a sua função.

O Lambda transmite todos os registros do lote para a função em uma única chamada, desde que o tamanho total dos eventos não exceda a cota de tamanho da carga útil de invocação para invocação síncrona (6 MB). O Lambda e o Amazon SQS geram metadados para cada registro. Esses metadados adicionais contam para o tamanho total da carga útil e podem fazer com que o total de registros enviados em um lote seja menor que o tamanho do lote configurado. Os campos de metadados enviados pelo Amazon SQS podem variar em termos de comprimento. Para saber mais sobre os campos de metadados do Amazon SQS, consulte a documentação da operação de API ReceiveMessage na Referência de APIs do Amazon Simple Queue Service.

Janela do lote

O máximo de tempo para reunir registros antes de invocar a função, em segundos. Aplicável somente a filas padrão.

Se você estiver usando uma janela de lote maior que zero segundos, deverá considerar o aumento do tempo de processamento no tempo limite de visibilidade da fila. Recomendamos definir o tempo limite de visibilidade da fila para seis vezes o tempo limite da função, acrescido do valor de MaximumBatchingWindowInSeconds. Isso permite que sua função do Lambda tenha tempo para processar cada lote de eventos e tentar novamente em caso de erro de controle de utilização.

Quando as mensagens ficam disponíveis, o Lambda começa a processar as mensagens em lotes. O Lambda começa a processar cinco lotes por vez com cinco invocações simultâneas de sua função. Se ainda houver mensagens disponíveis, o Lambda adicionará até 300 instâncias a mais da função por minuto, até alcançar 1.000 instâncias da função, no máximo. Para saber mais sobre a escalabilidade e simultaneidade, consulte Escalabilidade da função do Lambda.

Para processar mais mensagens, você pode otimizar sua função do Lambda para aumentar o throughput. Para obter mais informações, consulte Entender como o AWS Lambda escala com as filas padrão do Amazon SQS.

Máximo de simultaneidade

O número máximo de funções simultâneas que a origem do evento pode invocar. Para ter mais informações, consulte Configuração de simultaneidade máxima para origens de eventos do Amazon SQS.

Critérios de filtro

Adicione critérios de filtro para controlar quais eventos o Lambda enviará à função para processamento. Para ter mais informações, consulte Filtragem de eventos do Lambda.