Todos los productos
Search
Centro de documentos

Function Compute:Configurar ciclos de vida de instancias

Última actualización: Sep 06, 2026

Cuando se procesan solicitudes de usuario, Function Compute asigna automáticamente una o más instancias. Cada instancia proporciona un entorno de ejecución seguro y aislado. Al migrar aplicaciones tradicionales a una arquitectura serverless, la naturaleza transitoria de la creación y destrucción de instancias puede provocar problemas como retrasos en la actualización de los datos de monitoreo, latencia en las métricas o pérdida de información. Para resolver estos inconvenientes, Function Compute ofrece hooks de ciclo de vida de instancia que ayudan a garantizar que sus datos de monitoreo sean oportunos y completos.

Ciclo de vida de la instancia de función

Las instancias de función se crean y se destruyen bajo demanda según el volumen de invocaciones actual de su función. El ciclo de vida de cada instancia incluye tres fases: creación de la instancia, invocación y destrucción de la instancia, tal como se muestra en la siguiente figura.

image

Creating

Durante la fase Creating, Function Compute crea una instancia de función con base en la configuración de su función. En esta fase, Function Compute ejecuta las siguientes tareas en orden:

  1. Instance Create: incluye cargar el código, cargar capas o extraer una imagen e iniciar la instancia.

  2. Runtime Init.

  3. Ejecutar el hook Initializer configurado. Para obtener más información, consulte Initializer hook.

image

La creación de instancias ocurre principalmente en los dos escenarios siguientes.

  • Escalado horizontal elástico

    Cuando se recibe una solicitud de invocación y todas las instancias de función actuales están ocupadas, se crea una nueva instancia para procesarla. La instancia se genera de inmediato y después comienza el proceso de invocación. Este escalado horizontal elástico puede generar un arranque en frío. Para conocer cómo mitigar este problema, consulte Best practices for optimizing cold starts in Function Compute.

  • Ajuste del número mínimo de instancias

    Si cambia el número mínimo de instancias configurado de 0 a 1 o más, Function Compute inicia inmediatamente el proceso de creación de instancias. Si en ese momento no se reciben solicitudes de invocación, es posible que exista un retraso entre la creación de la instancia y la primera invocación. Para obtener más información, consulte Configure an elastic policy for the minimum number of instances.

Invoke

Mientras una instancia está en ejecución, Function Compute llama al controlador de su función para procesar las solicitudes de invocación. Durante la fase de invocación, si se usa un runtime integrado, cada instancia procesa solo una solicitud a la vez. Con un runtime personalizado o un runtime de contenedor personalizado, una instancia puede procesar varias solicitudes de forma simultánea. Esto se logra al configurar la concurrencia de instancias. Para obtener más información, consulte Configure instance concurrency.

Function Compute cobra únicamente por el tiempo durante el cual su código se está ejecutando, lo que incluye las solicitudes y los controladores de hooks. Durante los periodos de inactividad entre solicitudes, la instancia se congela y no genera cargos. Para obtener más información, consulte Billing.

Destroy

Esta fase se activa cuando una instancia de función no recibe invocaciones durante un periodo determinado. Durante la fase de destrucción, Function Compute ejecuta primero el hook PreStop. En este hook se pueden ejecutar tareas de limpieza.

La destrucción de instancias suele ocurrir en los tres escenarios siguientes.

  • Instancia inactiva: si una instancia permanece inactiva durante un periodo especificado, Function Compute la recupera automáticamente.

  • Ajuste del número mínimo de instancias: cuando reduce el número mínimo de instancias, Function Compute destruye de inmediato las instancias excedentes.

  • Excepción de instancia: si una instancia presenta un error durante la fase de creación o de invocación, Function Compute la destruye.

Mecanismo de congelación de instancias

Cuando no hay solicitudes de invocación, Function Compute congela la instancia. Al llegar una nueva solicitud, Function Compute descongela la instancia. Este proceso se muestra en la siguiente figura.

image

La congelación de una instancia ocurre principalmente en las dos situaciones siguientes:

  • Después de completar la fase de inicialización de la instancia, pero antes de la primera invocación.

  • Después de finalizar una invocación, pero antes de que comience la siguiente.

Una vez que termina una invocación, Function Compute congela la instancia de función. Cualquier proceso en segundo plano, hilo o corrutina de su código se pausa y no puede continuar. Esto puede impedir que los registros asíncronos se escriban correctamente.

Límites

  • Para las funciones aceleradas por GPU, el hook Initializer admite dos tipos: Code Invocation y Command Execution. Solo se puede habilitar uno de estos tipos a la vez.

  • En las funciones activadas por eventos, web y de tareas, el hook Initializer solo admite el tipo Code Invocation.

  • El hook PreStop solo admite el tipo Code Invocation, y todos los runtimes son compatibles con este hook.

  • Los parámetros de entrada de un método de hook PreStop no incluyen un parámetro de evento.

  • El hook PreStop no devuelve ningún valor, por lo que se ignora cualquier lógica de retorno en su función.

  • Si utiliza el runtime de Java, debe actualizar fc-java-core a la versión 1.4.0 o posterior. De lo contrario, no podrá usar el hook PreStop.

  • No asuma que las operaciones asíncronas, como los hilos en segundo plano o el vaciado de registros, terminarán antes de que la instancia se congele.

  • El método de configuración de los hooks de tipo Code Invocation varía según el runtime. En un runtime integrado, debe definir un punto de entrada personalizado cuando configure un hook de ciclo de vida. Por ejemplo, si establece el controlador del hook Initializer en index.initialize, debe agregar una función de hook initialize a su código. En cambio, con runtimes personalizados y de contenedor personalizado, después de configurar los hooks Initializer y PreStop, el sistema envía una solicitud HTTP (POST /initialize o GET /pre-stop) a su función cuando la instancia se inicia o se detiene. El código de su aplicación debe encargarse de procesar estas solicitudes.

Facturación

Las invocaciones de los hooks de ciclo de vida de instancia no generan cargos por solicitud. Los demás costos se calculan con la misma lógica que en la fase de invocación de la instancia. La duración facturable se ilustra en la siguiente figura. Para obtener más información sobre la facturación, consulte Billing overview.

image

Requisitos previos

Se creó una función. Para obtener más información, consulte Create a function.

Configurar hooks de ciclo de vida de instancia

Console

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Function Management > Functions.

  2. En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función de destino.

  3. En la página de detalles de la función, haga clic en la pestaña Configuration y luego haga clic en Instance Configuration dentro de la sección Modify.

  4. En el panel Instance Configuration, configure el hook Initializer y su tiempo de espera.

    Este tema toma como ejemplo una función acelerada por GPU para explicar cómo configurar un hook Initializer. En las funciones activadas por eventos, web y de tareas, el hook Initializer solo admite el tipo Code Invocation. Siga los pasos descritos en este tema para el tipo Code Invocation.

    • Seleccione el tipo Code Invocation

      Active el interruptor Initializer hook y establezca Initializer hook timeout en 300 segundos. Una vez habilitada esta función, Function Compute envía una solicitud HTTP POST /initialize a la función cuando se inicia una instancia. Una respuesta 200 indica que la operación fue correcta, mientras que una respuesta 4xx o 5xx provoca un error o el reinicio de la instancia.

    • Seleccione el tipo Command Execution

      Active el interruptor Initializer hook, establezca Initializer hook timeout en 300 segundos y defina Command como >/bin/sh. En el editor de código, escriba un script de shell para enviar una solicitud POST de comprobación de estado a la API local de Stable Diffusion. Establezca la URL en http://localhost:7860 y REQUEST_PATH en sdapi/v1/txt2img. Construya una carga útil JSON que incluya los campos prompt, steps, height y width, y luego use curl para enviar la solicitud.

  5. En el panel Instance Configuration, configure el hook PreStop y su tiempo de espera; después, haga clic en Deploy.

  6. Si configuró un hook de tipo Code Invocation, debe implementar la función correspondiente en su código.

    1. Haga clic en la pestaña Code. En el editor de código, agregue la lógica de la función de hook.

      Por ejemplo, si configuró el controlador del hook PreStop como index.preStop, debe implementar la función preStop en su código. Para conocer cómo implementar hooks de ciclo de vida de instancia en distintos runtimes, consulte Lifecycle hooks for function instances.

      Nota

      El IDE en línea es compatible con los runtimes PHP, Python, Node.js y personalizados, pero no admite lenguajes compilados como Java, Go y .NET, ni runtimes de contenedor personalizados.

    2. Arriba del editor de código, haga clic en Deploy y luego en Test Function.

Serverless Devs

Cuando usa Serverless Devs para configurar un hook Initializer, el fragmento de código en su archivo s.yaml es similar al siguiente ejemplo:

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

Si necesita deshabilitar un hook, debe establecer explícitamente sus parámetros handler y command como cadenas vacías. Esto es obligatorio porque, de lo contrario, el backend no aplica la actualización. Por ejemplo, para deshabilitar el hook Initializer, despliegue la siguiente configuración. Así, los parámetros timeout y command del hook Initializer se ignorarán.

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

Para conocer cómo implementar hooks de ciclo de vida de instancia en distintos runtimes, consulte Lifecycle hooks for function instances.

SDK

Puede usar un SDK para desplegar y actualizar hooks. Esta sección explica cómo obtener el código de ejemplo del SDK para configurar hooks al crear una función.

  1. Vaya al tema de referencia de la API CreateFunction y haga clic en Debug para abrir OpenAPI Portal.

  2. En la pestaña Parameters, especifique los input parameters según la función que desea crear.

    Nota

    El parámetro command no es compatible con los hooks PreStop.

    Expanda instanceLifecycleConfig. En la sección initializer, establezca timeout en 300. En la lista command, agregue un elemento en el índice 0 con el valor curl -X POST 'http://localhost:9000/preWarm'. En la sección preStop, establezca handler en index.preStop y timeout en 3.

  3. Después de configurar los parámetros, haga clic en la pestaña SDK Example para obtener el código de ejemplo del lenguaje que prefiera.

Para conocer cómo implementar hooks de ciclo de vida de instancia en distintos runtimes, consulte Lifecycle hooks for function instances.

Hooks de ciclo de vida para instancias de función

Todos los runtimes de Function Compute admiten los hooks Initializer y PreStop. Consulte la siguiente documentación para aprender a implementar hooks de ciclo de vida de instancia en diferentes runtimes.

Runtime

Descripción

Referencias

Node.js

Implementar hooks de ciclo de vida para instancias de función en Node.js.

Lifecycle hooks for function instances

Python

Implementar hooks de ciclo de vida para instancias de función en Python.

Lifecycle hooks for function instances

PHP

Implementar hooks de ciclo de vida para instancias de función en PHP.

Lifecycle hooks for function instances

Java

Implementar hooks de ciclo de vida para instancias de función en Java.

Lifecycle hooks for function instances

C#

Implementar hooks de ciclo de vida para instancias de función en C#.

Lifecycle hooks for function instances

Go

Implementar hooks de ciclo de vida para instancias de función en Go.

Lifecycle hooks for function instances

custom runtime

Implementar hooks de ciclo de vida para instancias de función en un runtime personalizado.

Lifecycle hooks for function instances

custom container runtime

Implementar hooks de ciclo de vida para instancias de función en un runtime de contenedor personalizado.

Lifecycle hooks for function instances

Consultar registros relacionados con los hooks

Después de configurar los hooks de ciclo de vida de instancia e implementar las funciones correspondientes, puede consultar los registros asociados.

Nota

Actualmente, los registros generados por los hooks de tipo Command Execution no se pueden escribir en los registros de la función.

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Function Management > Functions.

  2. En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función de destino.

  3. En la página de detalles de la función, haga clic en la pestaña Logs. En la pestaña Invocation Requests, busque la solicitud de destino y haga clic en Advanced Logs en la columna Actions.

    Puede usar el ID de instancia para consultar los registros de inicio y fin de todos los hooks de ciclo de vida. También puede utilizar una consulta como instance ID AND "hook keyword" para buscar los registros de un hook específico; por ejemplo, c-62833f38-20f1629801fa4bd***** and PreStop.

    Además, puede usar el RequestId de los registros de inicio y fin para consultar los registros de una solicitud específica. Si un registro no contiene un RequestId, haga clic en el ícono db_lifecycle_log_context de esa entrada para ver sus registros de contexto.