Configurar o comportamento de escalabilidade para mapeamentos de origem de eventos do SQS - AWS Lambda

Configurar o comportamento de escalabilidade para mapeamentos de origem de eventos do SQS

É possível controlar o comportamento de escalabilidade de seus mapeamentos da origem do evento do Amazon SQS por meio de configurações máximas de simultaneidade ou habilitando o modo provisionado. Estas são as opções mutuamente exclusivas.

Por padrão, o Lambda escala automaticamente os agentes de sondagem de eventos com base no volume de mensagens. Ao habilitar o modo provisionado, você aloca um número mínimo e máximo de recursos de sondagem dedicados que permanecem prontos para lidar com os padrões de tráfego esperados. Isso permite que você otimize a performance do mapeamento da origem do evento de duas maneiras:

  • Modo padrão (padrão): o Lambda gerencia automaticamente a escalabilidade, começando com um pequeno número de agentes de sondagem e aumentando ou diminuindo a escala com base na workload.

  • Modo provisionado: você configura recursos de sondagem dedicados com limites mínimos e máximos, permitindo um escalonamento 3 vezes mais rápido e uma capacidade de processamento até 16 vezes maior.

Para filas padrão, o Lambda usa sondagem longa para sondar uma fila até que ela se torne ativa. Quando as mensagens estão disponíveis, o Lambda começa a processar cinco lotes por vez com cinco invocações simultâneas da sua função. Se ainda houver mensagens disponíveis, o Lambda aumentará o número de processos de leitura de lotes em até 300 invocações simultâneas a mais por minuto. O número máximo de invocações que podem ser processadas simultaneamente por um mapeamento da origem do evento é 1.250. Quando não há muito tráfego, o Lambda reduz o processamento para cinco invocações simultâneas e pode otimizar para apenas duas invocações simultâneas para reduzir as chamadas do Amazon SQS e os custos correspondentes. Porém, essa otimização não está disponível quando você ativa a configuração máxima de simultaneidade.

Para filas FIFO, o Lambda envia mensagens para a função na ordem em que as recebe. Ao enviar uma mensagem para uma fila do FIFO, você especifica umID do grupo de mensagens. O Amazon SQS garante que as mensagens no mesmo grupo sejam entregues ao Lambda em ordem. Quando o Lambda lê suas mensagens em lotes, cada lote poderá conter mensagens de mais de um grupo de mensagens, mas a ordem das mensagens será mantida. Se a função retornar um erro, ela fará todas as tentativas possíveis nas mensagens afetadas antes que o Lambda receba mensagens adicionais do mesmo grupo.

Ao usar o modo provisionado, cada agente de sondagem de eventos pode tratar até 1 MB/s de throughput, até 10 invocações simultâneas ou até 10 chamadas de API de sondagem do Amazon SQS por segundo. O Lambda escala o número de agentes de sondagem de eventos entre o mínimo e o máximo configurados, adicionando rapidamente até 1.000 simultaneidades por minuto para fornecer processamento consistente de baixa latência de seus eventos do Amazon SQS. O uso do modo provisionado incorre em custos adicionais. Para obter detalhes sobre preços, consulte Definição de preços do AWS Lambda. Cada agente de sondagem de eventos usa uma sondagem longa em sua fila do SQS com até 10 sondagens por segundo, o que incorre no custo das solicitações da API do SQS. Para obter mais detalhes, consulte Definição de preços do Amazon SQS. Você controla a escalabilidade e a simultaneidade por meio dessas configurações mínimas e máximas do agente de sondagem de eventos, em vez de usar a configuração máxima de simultaneidade, pois essas opções não podem ser usadas juntas.

nota

Não é possível usar a configuração máxima de simultaneidade e o modo provisionado ao mesmo tempo. Quando o modo provisionado está habilitado, você controla a escalabilidade e a simultaneidade do mapeamento da origem do evento do Amazon SQS por meio do número mínimo e máximo de agentes de sondagem de eventos.

Configuração de simultaneidade máxima para origens de eventos do Amazon SQS

É possível usar a configuração de simultaneidade máxima para controlar o comportamento de escalabilidade de suas fontes de eventos do SQS. Observe que a simultaneidade máxima não pode ser usada com o modo provisionado habilitado. A configuração de simultaneidade máxima limita o número de instâncias simultâneas da função que uma origem de evento do Amazon SQS pode invocar. A simultaneidade máxima é uma configuração em nível de origem do evento. Se você tiver diversas origens de eventos do Amazon SQS mapeadas para uma função, cada origem de evento poderá ter uma configuração de simultaneidade máxima separada. É possível usar a simultaneidade máxima para evitar que uma fila use toda a simultaneidade reservada da função ou todo o restante da cota de simultaneidade da conta. Não há custos para configurar a simultaneidade máxima em uma origem de evento do Amazon SQS.

Importante, a simultaneidade máxima e a simultaneidade reservada são duas configurações independentes. Não defina a simultaneidade máxima maior que a simultaneidade reservada da função. Se você configurar a simultaneidade máxima, certifique-se de que a simultaneidade reservada da função seja maior ou igual à simultaneidade máxima total para todas as origens de eventos do Amazon SQS na função. Caso contrário, o Lambda pode aplicar um controle de utilização para as suas mensagens.

Quando a cota de simultaneidade da sua conta é definida com o valor padrão de 1.000, um mapeamento de origem de eventos do Amazon SQS pode ser escalado para invocar instâncias de função até esse valor, a menos que você especifique uma simultaneidade máxima.

Se você receber um aumento na cota de simultaneidade padrão da sua conta, o Lambda talvez não consiga invocar instâncias de funções simultâneas até sua nova cota. Por padrão, o Lambda pode escalar para invocar até 1.250 instâncias de funções simultâneas para um mapeamento de origem de eventos do Amazon SQS. Se isso não for suficiente para seu caso de uso, entre em contato com o suporte da AWS para discutir um aumento na simultaneidade de mapeamento de origem de eventos do Amazon SQS da sua conta.

nota

Para filas FIFO, as invocações simultâneas são limitadas pelo número de IDs de grupos de mensagens (messageGroupId) ou pela configuração máxima de simultaneidade, o que for menor. Por exemplo, se você tiver seis IDs de grupo de mensagens e a simultaneidade máxima estiver definida como dez, sua função poderá ter no máximo seis invocações simultâneas.

É possível configurar a simultaneidade máxima em mapeamentos da origem do evento novos e existentes do Amazon SQS.

Configuração da simultaneidade máxima usando o console do Lambda
  1. Abra a página Funções do console do Lambda.

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

  3. Em Function overview (Visão geral da função), escolha SQS. Isso abre a guia Configuration (Configuração).

  4. Selecione o acionador do Amazon SQS e escolha Edit (Editar).

  5. Em Maximum concurrency (Simultaneidade máxima), insira um número entre dois e mil. Para desativar a simultaneidade máxima, deixe a caixa em branco.

  6. Escolha Salvar.

Configuração da simultaneidade máxima usando a AWS Command Line Interface (AWS CLI)

Use o comando update-event-source-mapping com a opção --scaling-config. Exemplo:

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --scaling-config '{"MaximumConcurrency":5}'

Para desativar a simultaneidade máxima, insira um valor vazio para --scaling-config:

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --scaling-config "{}"
Configuração da simultaneidade máxima usando a API do Lambda

Use a ação CreateEventSourceMapping ou UpdateEventSourceMapping com um objeto ScalingConfig.