Los controladores procesan solicitudes; los hooks de ciclo de vida gestionan cambios de estado de instancias; los registros se integran con Simple Log Service.
Controladores
Cada función requiere un controlador. El entorno de ejecución de Function Compute carga e invoca su controlador para procesar solicitudes.
Entornos de ejecución integrados
Los controladores de los entornos de ejecución integrados siguen un formato estándar. Procesan eventos de disparadores como Object Storage Service (OSS), Simple Log Service, ApsaraMQ for RocketMQ y EventBridge. Los disparadores HTTP proporcionan un endpoint URI para la invocación directa.
Entornos de ejecución Custom y Custom Container
Los controladores de los entornos de ejecución Custom y Custom Container funcionan de manera diferente. Web functions.
Configure el controlador
Establezca el parámetro Handler en la consola de Function Compute. Create a function.
Hooks de ciclo de vida de las instancias
Function Compute crea instancias bajo demanda para gestionar solicitudes. Las instancias inactivas se congelan y, después de un tiempo de espera, se destruyen.
Los hooks de ciclo de vida ejecutan lógica personalizada cuando cambia el estado de una instancia. Todos los entornos de ejecución admiten los hooks Initializer y PreStop. Configure instance lifecycles.
Initializer hook
El hook Initializer se ejecuta después de que se inicia una instancia, pero antes del controlador. Se ejecuta exactamente una vez por instancia y debe completarse correctamente. El comportamiento ante un error depende del tipo de invocación:
Invocaciones sincrónicas -- el sistema devuelve el error.
Invocaciones asincrónicas -- el sistema reintenta según la política de reintentos configurada.
Utilice el hook Initializer para tareas de inicialización costosas que deben ejecutarse una sola vez, no en cada invocación:
Creación de grupos de conexiones
Carga de dependencias de la función
Tareas de configuración relacionadas con bases de datos
PreStop hook
El hook PreStop se ejecuta antes de destruir una instancia de función. Úselo para tareas de limpieza, como:
Cierre de conexiones de base de datos
Reporte y actualización del estado de la instancia
Registros
Function Compute almacena en Simple Log Service los registros de invocaciones de funciones y los registros que imprime el código.
Un Logstore de nivel de servicio almacena los registros de funciones. Configure the logging feature.
Cuando se habilita el registro durante la creación de una función, la consola crea automáticamente un Logstore predeterminado.
Sentencias de registro
Cada lenguaje ofrece una sentencia de registro integrada y una sentencia de registro de Function Compute. Las sentencias de Function Compute etiquetan las entradas con un ID de solicitud para facilitar el filtrado.
|
Lenguaje |
Sentencia integrada |
Sentencia de Function Compute |
Referencia |
|
Node.js |
|
|
|
|
Python |
|
|
|
|
Java |
|
|
|
|
PHP |
|
|
|
|
C# |
|
|
|
|
Golang |
|
|
Ambos tipos de sentencia envían registros al Logstore. Las sentencias de Function Compute agregan un ID de solicitud a cada entrada:
# Built-in statement: print('hello world')
message: hello world
# Function Compute statement: logger.info('hello world')
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
Estructura de los registros
Un registro de ejecución de función contiene el nombre del servicio, el nombre de la función, la versión actual, el alias y los registros del código:
__source__:
__tag__:__receive_time__: 1584072413
__topic__: FCLogs:myFunction
functionName: myFunction
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
qualifier: LATEST
serviceName: myService
versionId:
El entorno de ejecución imprime marcadores de inicio y de fin para cada invocación:
Inicio:
FC Invoke Start RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650Fin:
FC Invoke End RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650
Sistemas operativos
Los entornos de ejecución integrados se ejecutan en Debian 9 LTS, Debian 10 LTS, Debian 11 LTS o Debian 12 LTS. Solo la arquitectura x86_64 es compatible.
Personalice el sistema operativo mediante capas o variables de entorno. Por ejemplo, Function Compute usa UTC de forma predeterminada. Establezca TZ en Asia/Shanghai para UTC+8. Configure layers y Configure environment variables.