Executar código com o Lambda
Quando você escreve uma função do Lambda, está criando um código que será executado em um ambiente exclusivo com tecnologia sem servidor. A compreensão de como o Lambda executa o código envolve dois aspectos principais: o modelo de programação que define como o código interage com o Lambda e o ciclo de vida do ambiente de execução que determina como o Lambda gerencia o ambiente de runtime do código.
O modelo de programação do Lambda
O modelo de programação funciona como um conjunto comum de regras sobre como o Lambda trabalha com o código, esteja você escrevendo em Python, em Java ou em qualquer outra linguagem com suporte. O modelo de programação inclui o runtime e o manipulador.
Para funções padrão:
-
O Lambda recebe um evento.
-
O Lambda usa o runtime para preparar o evento em um formato que o código possa usar.
-
O runtime envia o evento formatado para o manipulador.
-
Seu manipulador processa o evento usando o código que você escreveu.
Para funções duráveis:
-
O Lambda recebe um evento.
-
O runtime prepara o evento e o DurableContext
-
Seu manipulador pode:
Processar etapas com pontos de verificação automáticos
Pausar a execução sem consumir recursos
Retomar a partir do último ponto de verificação com êxito
Manter o estado entre as etapas
Essencial para esse modelo é o manipulador, ao qual o Lambda envia os eventos para serem processados pelo código. Pense nele como o ponto de entrada para o código. Quando o Lambda recebe um evento, ele passa esse evento e algumas informações de contexto para o manipulador. O manipulador então executa o código para processar esses eventos; por exemplo, ele pode ler um arquivo quando ele é carregado no Amazon S3, analisar uma imagem ou atualizar um banco de dados. Quando o código termina de processar um evento, o manipulador está pronto para processar o próximo.
O modelo de execução do Lambda
Embora o modelo de programação defina como o Lambda interage com o código, o ambiente de execução é onde o Lambda realmente executa a função, pois é um espaço computacional seguro e isolado criado especificamente para a função.
Cada ambiente segue um ciclo de vida que varia entre as funções padrão e duráveis:
Funções padrão (até 15 minutos):
-
Inicialização: configuração do ambiente e carregamento de código
-
Invocação: execução única do código da função
-
Desligamento: limpeza do ambiente
Funções duráveis (até 1 ano):
-
Inicialização: configuração de ambiente e estado durável
-
Invocação: várias etapas com pontos de verificação automáticos
-
Estados de espera: pausa a execução sem consumo de recursos
-
Retomar: reiniciar a partir do último ponto de verificação
-
Desligar: limpeza do estado durável
Esse ambiente lida com aspectos importantes da execução da função. Ele fornece à função memória e um diretório /tmp para armazenamento temporário. Para funções duráveis, ele também gerencia:
Persistência de estado automática entre etapas
Armazenamento e recuperação em pontos de verificação
Coordenação do estado de espera
Acompanhamento do andamento em execuções de longa duração