Invoca a função Lambda com atraso

1

Eu tenho este esquema para receber solicitações http e fazer algum processamento em arquivos em uma instância do Windows Server EC2.

API Gateway -> Lambda -> EC2 (Node.js + Express)

Por enquanto, há algumas solicitações por dia, , para que a instância seja interrompida até que uma solicitação seja . Quando uma requisição chega, a função Lambda inicia a instância , mas a primeira requisição é perdida . Se a instância estiver em execução, a solicitação será encaminhada.

Eu quero uma solução na qual eu não perca o primeiro pedido. Eu tenho várias abordagens, mas nenhuma delas parece ser a certa:

1) Salve esse pedido no ElastiCache (Redis / memcached). Na inicialização do servidor Express, verifique se há alguma solicitação salva.

2) Use o Amazon SQS para armazenar todas as solicitações. Em seguida, alterne a Express API para um trabalhador para verificar o SQS em busca de novas mensagens. Eu não gosto desta solução porque vou verificar o tempo todo para um SQS que na maioria das vezes estará vazio e suponho que isso pode ser caro.

3) Volte a invocar a função Lambda com um atraso. Basta fazer outra chamada para a função Lambda com a mesma solicitação em 1 minuto (por exemplo), quando a instância estiver pronta. Esta é a melhor solução agora, na minha opinião, simples e eficaz, mas não sei como implementá-la. Eu sei que você pode agendar execuções Lambda, mas existem como "executar esta função todos os dias às 15:00", e eu só quero executar a função uma vez com um atraso.

Estou preso a isso, espero que alguém possa esclarecer minhas ideias.

    
por fsinisi90 14.10.2016 / 18:41

1 resposta

1

Use a solução SQS.

Quando a função do Lambda for executada, armazene a solicitação no SQS.

Use o Auto Scaling para iniciar e encerrar sua instância do EC2 à medida que solicitações são adicionadas à fila.

Em sua instância do EC2, pesquise a fila do SQS por trabalho. Você pode minimizar os custos de SQS minimizando as solicitações:

  • Use pesquisas longas e / ou
  • Verifique a fila uma vez por minuto, dormindo entre as verificações.

As solicitações de SQS não são tão caras. A pesquisa uma vez por minuto renderia 43,200 pedidos por mês. Isso está bem abaixo dos 1 milhão de solicitações que você recebe gratuitamente todos os meses. Mesmo se não for coberto pelo nível gratuito, o primeiro milhão de solicitações será de apenas US $ 0,50.

    
por 15.10.2016 / 18:46