AWS Lambda
Guia do desenvolvedor

Contexto de execução do AWS Lambda

Quando o AWS Lambda executa sua função do Lambda, ele provisiona e gerencia os recursos necessários para executar sua função do Lambda. Quando você cria uma função do Lambda, você especifica informações de configuração, como a quantidade de memória e o tempo máximo de execução que você deseja permitir para sua função do Lambda. Quando uma função do Lambda é invocada, o AWS Lambda inicia um contexto de execução com base nas definições da configuração que você fornece. O contexto de execução é um ambiente de tempo de execução temporário que inicializa todas as dependências externas do código da função do Lambda, como conexões de banco de dados ou endpoints HTTP. Isso oferece melhor desempenho às invocações subsequentes, pois não há necessidade de "inicializar a frio" ou de inicializar essas dependências externas, conforme explicado a seguir.

A configuração de um contexto de execução e o "bootstrapping" necessário são demorados, o que adiciona latência sempre que a função do Lambda é invocada. Geralmente, você vê essa latência quando uma função do Lambda é invocada pela primeira vez ou depois que ela foi atualizada, porque o AWS Lambda tenta reutilizar o contexto de execução para invocações subsequentes da função do Lambda.

Depois que uma função do Lambda é executada, o AWS Lambda mantém o contexto de execução por algum tempo em antecipação a outra invocação da função do Lambda. Na realidade, o serviço congela o contexto de execução depois que uma função do Lambda é concluída e descongela o contexto para reutilização se o AWS Lambda optar por reutilizar o contexto quando a função do Lambda for invocada novamente. Essa abordagem de reutilização do contexto de execução tem as seguintes implicações:

  • Todas as declarações no código de sua função do Lambda (fora do código do handler, consulte Modelo de programação) permanecem inicializadas, fornecendo otimização adicional quando a função é invocada novamente. Por exemplo, se sua função de Lambda estabelecer uma conexão com o banco de dados, em vez de restabelecer a conexão, a conexão original é usada em invocações subsequentes. Sugerimos que você adicione lógica em seu código para verificar se uma há conexão existente antes de criar uma.

  • Cada contexto de execução fornece 512 MB de espaço em disco adicional no diretório /tmp. O conteúdo do diretório permanece quando o contexto de execução é congelado, fornecendo cache transitório que pode ser usado para várias invocações. Você pode adicionar um código extra para verificar se o cache tem os dados que você armazenou. Para obter informações sobre os limites de implantação, consulte Limites do AWS Lambda.

  • Os processos em segundo plano ou os retornos de chamadas iniciados por sua função do Lambda, que não foram concluídos quando a função terminou, serão retomados se o AWS Lambda optar por reutilizar o contexto de execução. Você deve garantir que todos os processos em segundo plano ou retornos de chamadas (no caso do Node.js) em seu código sejam concluídos antes que o código seja encerrado.

Ao escrever o código de sua função do Lambda, não presuma que o AWS Lambda reutilizará automaticamente o contexto de execução para invocações subsequentes da função. Outros fatores podem ditar a necessidade do AWS Lambda de criar um novo contexto de execução, o que pode gerar resultados inesperados, como falhas de conexão do banco de dados.