Todos os produtos
Search
Central de documentação

Function Compute:Configure ciclos de vida de instâncias

Última atualização: Jun 29, 2026

Ao processar solicitações de usuários, o Function Compute aloca automaticamente uma ou mais instâncias. Cada instância oferece um ambiente de execução seguro e isolado. Durante a migração de aplicações tradicionais para uma arquitetura serverless, a natureza transitória da criação e destruição de instâncias pode gerar problemas como atrasos na atualização de dados de monitoramento, latência de métricas ou perda de dados. Para resolver essas questões, o Function Compute disponibiliza hooks de ciclo de vida de instância que garantem dados de monitoramento atualizados e completos.

Ciclo de vida da instância de função

O Function Compute cria e destrói instâncias de função sob demanda conforme o volume atual de invocações. O ciclo de vida de cada instância compreende três fases: criação da instância, invocação e destruição da instância, conforme ilustra a figura a seguir.

image

Criação

Na fase de criação, o Function Compute provisiona uma instância de função com base nas configurações definidas. Nesta etapa, o serviço executa as seguintes tarefas em ordem:

  1. Criação da instância: inclui carregamento de código, carregamento de camadas ou pull de imagem e inicialização da instância.

  2. Inicialização do Runtime.

  3. Execução do hook Initializer configurado. Para mais informações, consulte Hook Initializer.

image

A criação de instâncias ocorre geralmente nos dois cenários a seguir.

  • Dimensionamento elástico horizontal (scale-out)

    Quando o sistema recebe uma solicitação de invocação e todas as instâncias atuais estão ocupadas, ele cria uma nova instância para atender à demanda. A instância é provisionada imediatamente e o processo de invocação começa em seguida. Esse dimensionamento elástico pode causar uma inicialização a frio (cold start). Para saber como mitigar esse problema, consulte Melhores práticas para otimizar inicializações a frio no Function Compute.

  • Ajuste do número mínimo de instâncias

    Se você alterar o número mínimo de instâncias configurado de 0 para 1 ou mais, o Function Compute iniciará imediatamente o processo de criação. Caso não haja solicitações de invocação naquele momento, poderá ocorrer um intervalo entre a criação da instância e a primeira invocação. Para mais detalhes, consulte Configure uma política elástica para o número mínimo de instâncias.

Invocação

Enquanto a instância estiver em execução, o Function Compute chamará o handler da sua função para processar as solicitações. Na fase de invocação, para runtimes integrados, cada instância processa apenas uma solicitação por vez. Já para custom runtime ou custom container runtime, uma única instância pode atender a múltiplas solicitações simultaneamente. Para habilitar isso, configure a concorrência da instância. Para mais informações, consulte Configure concorrência de instância.

O Function Compute cobra apenas pelo tempo de execução do seu código, incluindo solicitações e handlers de hooks. Nos períodos ociosos entre solicitações, a instância fica congelada e não gera custos. Para mais detalhes, consulte Faturamento.

Destruição

Essa fase é acionada quando uma instância de função não recebe invocações por um determinado período. Durante a destruição, o Function Compute executa primeiro o hook PreStop. Use esse hook para realizar tarefas de limpeza.

A destruição de instâncias acontece normalmente em três situações:

  • Instância ociosa: se uma instância permanecer inativa por um período especificado, o Function Compute a recuperará automaticamente.

  • Ajuste do número mínimo de instâncias: ao reduzir o número mínimo de instâncias, o Function Compute destruirá imediatamente as instâncias excedentes.

  • Exceção de instância: caso ocorra um erro durante a criação ou invocação, o Function Compute destruirá a instância afetada.

Mecanismo de congelamento de instância

Na ausência de solicitações de invocação, o Function Compute congela a instância. Quando chega uma nova solicitação, o serviço descongela a instância. Esse fluxo está representado na figura a seguir.

image

O congelamento da instância ocorre principalmente nas duas situações seguintes:

  • Após a conclusão da fase de inicialização da instância, mas antes da primeira invocação.

  • Após o término de uma invocação, mas antes do início da próxima.

Depois que uma invocação termina, o Function Compute congela a instância da função. Quaisquer processos em segundo plano, threads ou corrotinas no seu código são pausados e não continuam. Isso pode impedir a gravação bem-sucedida de logs assíncronos.

Limitações

  • Para funções aceleradas por GPU, o hook Initializer suporta dois tipos: Code Invocation e Command Execution. Ative apenas um desses tipos por vez.

  • Em funções acionadas por eventos, web e de tarefas, o hook Initializer aceita exclusivamente o tipo Code Invocation.

  • O hook PreStop suporta apenas o tipo Code Invocation e é compatível com todos os runtimes.

  • Os parâmetros de entrada de um método de hook PreStop não incluem um parâmetro de evento.

  • O hook PreStop não retorna valor; qualquer lógica de retorno na sua função será ignorada.

  • Ao utilizar o runtime Java, atualize o fc-java-core para a versão 1.4.0 ou superior. Caso contrário, não será possível usar o hook PreStop.

  • Não presuma que operações assíncronas, como threads em segundo plano ou flush de logs, serão concluídas antes do congelamento da instância.

  • O método de configuração para hooks do tipo Code Invocation varia conforme o runtime. Em runtimes integrados, defina um ponto de entrada personalizado ao configurar o hook de ciclo de vida. Por exemplo, se definir o handler do hook Initializer como index.initialize, adicione uma função de hook initialize ao seu código. Por outro lado, em custom runtimes e custom container runtimes, após configurar os hooks Initializer e PreStop, o sistema envia uma solicitação HTTP (POST /initialize ou GET /pre-stop) para sua função quando a instância inicia ou para. Seu código de aplicação deve tratar essas solicitações.

Faturamento

Invocações de hooks de ciclo de vida de instância não geram cobranças de solicitação. Outros custos seguem a mesma lógica da fase de invocação da instância. A duração faturável está ilustrada na figura a seguir. Para mais detalhes sobre cobrança, consulte Visão geral do faturamento.

image

Pré-requisitos

Crie uma função. Para mais informações, consulte Criar uma função.

Configure hooks de ciclo de vida de instância

Console

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > 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 Configuration e, em seguida, clique em Instance Configuration na seção Modify.

  4. No painel Instance Configuration, configure o hook Initializer e seu tempo limite.

    Este tópico utiliza uma função acelerada por GPU como exemplo para descrever a configuração do hook Initializer. Para funções acionadas por eventos, web e de tarefas, o hook Initializer suporta apenas o tipo Code Invocation. Siga as etapas descritas neste tópico para o tipo Code Invocation.

    • Selecione o tipo Code Invocation

      Ative a chave Initializer hook e defina o Initializer hook timeout como 300 segundos. Após ativar esse recurso, o Function Compute envia uma solicitação HTTP POST /initialize para a função quando uma instância inicia. Uma resposta 200 indica sucesso, enquanto respostas 4xx ou 5xx causam erro ou reinicialização da instância.

    • Selecione o tipo Command Execution

      Ative a chave Initializer hook, defina o Initializer hook timeout como 300 segundos e configure Command como >/bin/sh. No editor de código, escreva um script shell para enviar uma solicitação POST de verificação de integridade para a API local do Stable Diffusion. Defina a URL como http://localhost:7860 e o REQUEST_PATH como sdapi/v1/txt2img. Construa um payload JSON contendo os campos prompt, steps, height e width e use curl para enviar a solicitação.

  5. No painel Instance Configuration, configure o hook PreStop e seu tempo limite e, em seguida, clique em Deploy.

  6. Caso tenha configurado um hook do tipo Code Invocation, implemente a função correspondente no seu código.

    1. Clique em a aba Code. No editor de código, adicione a lógica da função de hook.

      Por exemplo, se você configurou o handler do hook PreStop como index.preStop, implemente a função preStop no seu código. Para saber como implementar hooks de ciclo de vida de instância em diferentes runtimes, consulte Hooks de ciclo de vida para instâncias de função.

      Nota

      O IDE online suporta PHP, Python, Node.js e custom runtimes, mas não oferece suporte a linguagens compiladas como Java, Go e .NET, nem a custom container runtimes.

    2. Acima do editor de código, clique em Deploy e, em seguida, clique em Test Function.

Serverless Devs

Ao usar o Serverless Devs para configurar um hook Initializer, o trecho de código no seu arquivo s.yaml será semelhante ao exemplo abaixo:

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    initializer:
      timeout: 60
      command:
        - /bin/sh
        - -c
        - echo "hello"

Para desativar um hook, defina explicitamente seus parâmetros handler e command como strings vazias. Isso é necessário porque, caso contrário, o backend não aplica a atualização. Por exemplo, para desativar o hook Initializer, implante a configuração a seguir. Os parâmetros timeout e command do hook Initializer serão então ignorados.

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    initializer:
      handler: ""
      timeout: 60
      command: ""

Para obter informações sobre como implementar hooks de ciclo de vida de instância em diferentes runtimes, consulte Hooks de ciclo de vida para instâncias de função.

SDK

Use um SDK para implantar e atualizar hooks. Esta seção explica como obter códigos de exemplo de SDK para configurar hooks durante a criação de uma função.

  1. Acesse o tópico de referência da API CreateFunction e clique em Debug para abrir o OpenAPI Portal.

  2. Na aba Parameters, especifique os input parameters com base na função que deseja criar.

    Nota

    O parâmetro command não é suportado para hooks PreStop.

    Expanda instanceLifecycleConfig. Na seção initializer, defina timeout como 300. Na lista command, adicione um item no índice 0 com o valor curl -X POST 'http://localhost:9000/preWarm'. Na seção preStop, defina handler como index.preStop e timeout como 3.

  3. Após configurar os parâmetros, clique em a aba SDK Example para obter o código de exemplo na linguagem de sua preferência.

Para obter informações sobre como implementar hooks de ciclo de vida de instância em diferentes runtimes, consulte Hooks de ciclo de vida para instâncias de função.

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

Todos os runtimes no Function Compute suportam os hooks Initializer e PreStop. Consulte a documentação abaixo para aprender a implementar hooks de ciclo de vida de instância em diferentes runtimes.

Runtime

Descrição

Referências

Node.js

Implemente hooks de ciclo de vida para instâncias de função em Node.js.

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

Python

Implemente hooks de ciclo de vida para instâncias de função em Python.

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

PHP

Implemente hooks de ciclo de vida para instâncias de função em PHP.

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

Java

Implemente hooks de ciclo de vida para instâncias de função em Java.

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

C#

Implemente hooks de ciclo de vida para instâncias de função em C#.

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

Go

Implemente hooks de ciclo de vida para instâncias de função em Go.

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

custom runtime

Implemente hooks de ciclo de vida para instâncias de função em um custom runtime.

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

custom container runtime

Implemente hooks de ciclo de vida para instâncias de função em um custom container runtime.

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

Consultar logs relacionados a hooks

Após configurar os hooks de ciclo de vida de instância e implementar as funções correspondentes, consulte os logs associados.

Nota

Atualmente, logs gerados por hooks do tipo Command Execution não podem ser gravados nos logs da função.

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > 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 Logs. Na aba Invocation Requests, localize a solicitação alvo e clique em Advanced Logs na coluna Actions.

    Use o ID da instância para consultar os logs de início e fim de todos os hooks de ciclo de vida. Também é possível usar uma consulta como instance ID AND "hook keyword" para encontrar logs de um hook específico, por exemplo, c-62833f38-20f1629801fa4bd***** and PreStop.

    Além disso, use o RequestId dos logs de início e fim para consultar registros relacionados a uma solicitação específica. Se um log não contiver um RequestId, clique em o ícone db_lifecycle_log_context nessa entrada de log para visualizar seus logs de contexto.