A Amazon anunciou uma atualização para a Simple Queue Service (SQS) - os desenvolvedores agora podem usar o SQS para acionar funções do AWS Lambda. Além disso, os desenvolvedores não precisam mais executar um serviço de pesquisa ou criar um mapeamento SQS para SNS.
A Amazon SQS é um serviço de enfileiramento de mensagens e está disponível na AWS há mais de dez anos. É totalmente gerenciado pela Amazon e permite o desacoplamento entre serviços. É acessível em rede, com escalas automáticas e oferece operações de pagamento conforme o uso. O SQS fornece dois tipos de filas:
- Fila padrão, que fornecem rendimento máximo, solicitando o melhor esforço de entrega ao menos uma vez;
- Filas SQS FIFO, que são projetadas para garantir que as mensagens sejam processadas exatamente uma vez, na ordem exata em que são enviadas.
O AWS Lambda é um serviço que permite aos desenvolvedores executarem códigos sem a necessidade de provisionar e gerenciar servidores. O serviço evoluiu nos últimos quatro anos com a Amazon adicionando mais recursos, e agora, o suporte para o SQS. Isso significa que os desenvolvedores podem usar os serviços de enfileiramento como uma fonte de eventos diretos para as triggers do Lambda. Atualmente, as triggers do Lambda funcionam apenas com filas padrão.
Uma configuração típica para usar uma trigger SQS em uma função do Lambda é adicioná-lo a uma outra função e configurar a execução para que a função com a permissão apropriada para a comunicação com uma fila padrão do SQS. Em seguida, especifique o nome da fila que acionará a função e quantas mensagens devem ser aceitas por vez.
Quando o tamanho do lote é definido como um, até dez execuções do Lambda serão acionadas simultaneamente. No entanto, quando o tamanho do lote for definido superior a um, somente uma execução do Lambda será acionada e várias mensagens (com base no tamanho) serão enviadas. Chris Moyes, vice-presidente de tecnologia da ACI Information Group, declarou em um artigo da TechTarget:
Adicionalmente, os desenvolvedores podem usar esse tamanho de lote em conexão com as configurações de simultaneidade reservadas no Lambda para definir quantas mensagens podem ser processadas de uma vez, o que pode ser útil para limitar o uso ou impedir que outros sistemas sejam inundados, como entrega de conteúdo a um servidor FTP.
O AWS Lambda excluirá mensagens da fila padrão do SQS assim que a função que consome as mensagens for inicializada. No entanto, quando uma função falha ou excede o tempo limite, a mensagem reaparecerá na fila conforme especificado pelo tempo limite de visibilidade definido na fila. Os desenvolvedores podem configurar o tempo limite, as tentativas e a duração da visibilidade da fila padrão entre as novas tentativas.
O AWS Lambda pode escalar horizontalmente ao consumir mensagens e faz isso automaticamente. De acordo com o post sobre o anúncio:
O comportamento de escala do Lambda é projetado para manter baixos custos de pooling quando uma fila está vazia, ao mesmo tempo que permite escalonar para um alto rendimento quando a fila está sendo usada intensamente.
As triggers do Lambda registradas no SQS podem ser gerenciadas no console do SQS; onde os usuários também podem configurar e editar o gatilho. O novo recurso agora está disponível em todas as regiões onde o Lambda está disponível, a documentação está atualizada e há cobranças adicionais, exceto pelo serviço Lambda, que continuamente realiza uma longa busca na fila do SQS - a Amazon cobrará pelas chamadas a API padrão as taxas de preços SQS.