Todos os produtos
Search
Central de documentação

Function Compute:Hooks de ciclo de vida para instâncias de função

Última atualização: Jun 29, 2026

O Function Compute oferece suporte a dois hooks de ciclo de vida para instâncias de função Node.js: um Initializer hook, executado uma única vez após o início da instância, e um PreStop hook, executado antes da destruição da instância. Utilize esses hooks para gerenciar recursos — como conexões de banco de dados — que devem ser inicializados apenas uma vez por instância e liberados no momento do desligamento.

Funcionamento dos hooks de ciclo de vida

Uma instância de função passa pelas seguintes etapas:

  1. Início da instância

  2. Execução do Initializer hook (no máximo uma vez por instância)

  3. Execução do Handler para cada solicitação de invocação

  4. Agendamento da instância para destruição

  5. Execução do PreStop hook

  6. Destruição da instância

Os logs de execução dos hooks são cobrados à mesma taxa das solicitações de invocação regulares. No entanto, esses logs aparecem apenas em Function Logs, Real-time Logs e Advanced Logs — não constam na lista de solicitações de invocação. Para mais informações, consulte Visualizar logs de hooks de ciclo de vida.

Initializer hook

O Initializer hook é executado após o início de uma instância de função e antes que o handler processe quaisquer solicitações. O Function Compute garante que o hook seja executado no máximo uma vez durante o ciclo de vida da instância. Em caso de falha, o Function Compute tenta novamente até obter sucesso antes de rotear qualquer solicitação para a instância.

Utilize o Initializer hook para configurar recursos compartilhados — por exemplo, abrir uma conexão com o banco de dados que todas as invocações subsequentes possam reutilizar, em vez de reconectar a cada chamada.

Assinatura do método

Aspecto

Detalhes

Entrada

Apenas context — fornece o contexto de runtime no momento da invocação

Retorno

Sem valor de retorno. Chame return (ESM) ou callback (CommonJS) para sinalizar a conclusão

Exemplos de código

Ambos os exemplos utilizam initialize como nome da função do hook. Esse nome deve corresponder ao nome do Initializer hook configurado no console do Function Compute.

ECMAScript modules (Node.js 18 and later)

export const initialize = async (context) => {
  console.log('initializer');
  return "";
}

CommonJS modules

exports.initialize = function(context, callback) {
  console.log('initializer');
  callback(null, "");
};

PreStop hook

O PreStop hook é executado antes da destruição de uma instância de função. Sua assinatura de método é idêntica à do Initializer hook: aceita context como única entrada e requer uma chamada de return ou callback para ser concluído.

Utilize o PreStop hook para liberar recursos mantidos pela instância — por exemplo, fechar conexões de banco de dados antes do desligamento da instância.

As instâncias de função permanecem em cache por um período após o fim do processamento, portanto o PreStop hook não é executado imediatamente após o término de uma invocação. Para acionar o PreStop rapidamente durante testes, atualize a configuração ou o código da função — isso força a substituição da instância existente e aciona o PreStop hook.

Exemplos de código

Ambos os exemplos utilizam preStop como nome da função do hook. Esse nome deve corresponder ao nome do PreStop hook configurado no console.

ECMAScript modules (Node.js 18 and later)

export const preStop = async (context) => {
  console.log('preStop');
  return "";
}

CommonJS modules

module.exports.preStop = function(context, callback) {
  console.log('preStop');
  callback(null, "");
}

Configurar hooks de ciclo de vida

Usar o console do Function Compute

No console do Function Compute, configure o Initializer hook e o PreStop hook nas configurações da função. Para detalhes, consulte Configurar ciclos de vida de instância.

Especifique o nome de cada hook no formato [filename.methodname]:

Hook

Valor

Descrição

Initializer hook

index.initialize

Método initialize em index.js

PreStop hook

index.preStop

Método preStop em index.js

db-node.js-lifecycle

Usar Serverless Devs

Adicione instanceLifecycleConfig sob props no seu arquivo s.yaml. Cada hook requer um handler (no formato filename.methodname) e um timeout (em segundos).

edition: 3.0.0
name: hello-world-app
access: default

resources:
  hello_world:
    component: fc3
    props:
      region: cn-hangzhou
      functionName: nodejs-fc-hooks
      description: "Node.js lifecycle hooks by serverless devs"
      runtime: nodejs20
      code: ./code
      handler: index.handler
      memorySize: 128
      timeout: 30
      instanceLifecycleConfig:
        preStop:
          handler: index.preStop
          timeout: 3
        initializer:
          handler: index.initialize
          timeout: 3
      internetAccess: true
      logConfig: auto

Para todos os campos YAML suportados, consulte Comandos comuns do Serverless Devs.

Visualizar logs de hooks de ciclo de vida

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em a função desejada.

  3. Na página de detalhes da função, clique em a aba Test Function, clique em Test Function e escolha Logs > Function Logs.

A aba Logs exibe tanto os logs de invocação quanto os logs do Initializer. Exemplo:

2023-09-06 11:18:10 FC Initialize Start RequestId: 1-64f7ef72-64caf1ff0046194d9a26bbd7
2023-09-06 11:18:10 load code for handler:index.initialize
2023-09-06 11:18:10 2023-09-06 11:18:10 1-64f7ef72-64caf1ff0046194d9a26bbd7 [verbose] initializer
2023-09-06 11:18:10 FC Initialize End RequestId: 1-64f7ef72-64caf1ff0046194d9a26bbd7
2023-09-06 11:18:10 FC Invoke Start RequestId: 1-64f7ef72-64caf1ff0046194d9a26bbd7
2023-09-06 11:18:10 load code for handler:index.handler
2023-09-06 11:18:10 FC Invoke End RequestId: 1-64f7ef72-64caf1ff0046194d9a26bbd7

Para visualizar os logs do PreStop hook, atualize a configuração ou o código da função para forçar a substituição da instância. Após a conclusão da atualização, os logs do PreStop aparecerão em Function Logs. Exemplo:

2023-09-06 11:08:10 FC PreStop Start RequestId: 944bca62-b209-47a1-9e48-2723647bce0a
2023-09-06 11:08:10 load code for handler:index.preStop
2023-09-06 11:08:10 2023-09-06 11:08:10 944bca62-b209-47a1-9e48-2723647bce0a [verbose] preStop
2023-09-06 11:08:10 FC PreStop End RequestId: 944bca62-b209-47a1-9e48-2723647bce0a

Programa de exemplo

Um exemplo completo em Node.js que utiliza ambos os hooks com um banco de dados MySQL está disponível em nodejs14-mysql. O Initializer hook lê a configuração do MySQL a partir de variáveis de ambiente, cria uma conexão e testa a conectividade. O PreStop hook fecha a conexão.

Próximos passos