Noções básicas sobre o ambiente de execução das instâncias gerenciadas do Lambda
As instâncias gerenciadas do Lambda fornecem um modelo de implantação alternativo que executa seu código de função em instâncias do Amazon EC2 de propriedade do cliente, enquanto o Lambda gerencia os aspectos operacionais. O ambiente de execução das instâncias gerenciadas tem várias diferenças importantes em relação às funções do Lambda (padrão), principalmente na forma como ele lida com invocações simultâneas e gerencia os ciclos de vida do contêiner.
Observação: para obter informações sobre o ambiente de execução do Lambda (padrão), consulte Noções básicas sobre o ciclo de vida do ambiente de execução do Lambda.
Ciclo de vida do ambiente de execução
O ciclo de vida de um ambiente de execução de uma função das instâncias gerenciadas do Lambda difere do Lambda (padrão) de várias maneiras fundamentais:
Fase de inicialização
Durante a fase de inicialização, o Lambda executa as etapas a seguir:
-
Inicialização e registro de todas as extensões
-
Bootstrap do ponto de entrada do runtime. O runtime gera o número configurado de operadores de runtime (a implementação depende do runtime)
-
Execução do código de inicialização da função (código fora do manipulador)
-
Espere que pelo menos um operador de runtime sinalize que está pronto chamando
/runtime/invocation/next
A fase de inicialização é considerada concluída quando as extensões são inicializadas e pelo menos um operador de runtime tiver chamado /runtime/invocation/next. A função está então pronta para processar as invocações.
nota
Para as funções das instâncias gerenciadas do Lambda, a inicialização pode levar até 15 minutos. O tempo limite é de no máximo 130 segundos ou o tempo limite configurado da função (até 900 segundos).
Fase de invocação
A fase de invocação para funções das instâncias gerenciadas do Lambda tem várias características exclusivas:
Operação contínua. Ao contrário do Lambda (padrão), o ambiente de execução permanece continuamente ativo, processando as invocações à medida que elas chegam, sem congelar entre as invocações.
Processamento paralelo. Várias invocações podem ser executadas simultaneamente no mesmo ambiente de execução, cada uma gerenciada por um operador de runtime diferente.
Tempos limite independentes. O tempo limite configurado da função se aplica a cada invocação individual. Quando uma invocação expira, o Lambda marca essa invocação específica como com falha, mas não interrompe outras invocações em andamento nem encerra o ambiente de execução.
Tratamento de contrapressão. Se todos os operadores de runtime estiverem ocupados processando invocações, novas solicitações de invocação serão rejeitadas até que um operador fique disponível.
Tratamento de erros e recuperação
O tratamento de erros em ambientes de execução das funções de instâncias gerenciadas do Lambda difere do Lambda (padrão):
Tempos limite de invocações. Quando uma invocação individual expira, o Lambda retorna um erro de tempo limite para essa invocação específica, mas não encerra o ambiente de execução. Outras invocações simultâneas continuam sendo processadas normalmente.
Falhas do operador de runtime. Se um processo de operador de runtime falhar, o ambiente de execução continuará funcionando com os demais operadores íntegros.
Falhas de extensão. Se um processo de extensão falhar durante a inicialização ou operação, todo o ambiente de execução será marcado como não íntegro e encerrado. O Lambda criará um novo ambiente de execução para substituí-lo.
Sem redefinição/reparo. Diferentemente do Lambda (padrão), as instâncias gerenciadas não tentam redefinir e reinicializar o ambiente de execução após erros. Em vez disso, os contêineres não íntegros são encerrados e substituídos por novos.