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 compatível. O modelo de programação inclui o runtime e o manipulador.
-
O Lambda recebe um evento.
-
O Lambda usa o runtime (como Python ou Java) para preparar o evento em um formato que o código possa usar.
-
O runtime envia o evento formatado para o manipulador.
-
O manipulador processa o evento usando o código que você escreveu na função do Lambda.
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, é um espaço computacional seguro e isolado criado especificamente para a função. Cada ambiente segue um ciclo de vida de três fases.
-
Inicialização: o Lambda cria o ambiente e prepara tudo para executar a função. Isso inclui configurar o runtime escolhido, carregar o código e executar qualquer código de inicialização que você escreveu.
-
Invocação: quando os eventos chegam, o Lambda usa esse ambiente para executar a função. O ambiente pode processar muitos eventos ao longo do tempo, um após o outro. À medida que mais eventos chegam, o Lambda cria ambientes adicionais para lidar com o aumento de demanda. Quando a demanda diminuiu, o Lambda interrompe os ambientes que não são mais necessários.
-
Desligamento: no final, o Lambda encerra os ambientes. Antes de fazer isso, ele permite que a função limpe qualquer tarefa pendente.
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. Ele mantém recursos, como conexões de banco de dados entre invocações, para que a função possa reutilizá-los. Ele oferece atributos como simultaneidade provisionada, com os quais o Lambda prepara ambientes antecipadamente para melhorar a performance.