En un entorno de ejecución personalizado, su paquete de código (formato ZIP) es un programa de servidor HTTP. Function Compute inicia ese servidor HTTP durante un arranque en frío y enruta todas las solicitudes entrantes a través de él.
Cómo funciona
Durante un arranque en frío, Function Compute ejecuta el Startup Command y el Startup Parameter que configuró para iniciar su servidor HTTP. A partir de ese momento, el servidor HTTP gestiona todas las solicitudes de Function Compute.
Si no configura un comando de inicio ni parámetros, Function Compute inicia el servidor HTTP desde /code/bootstrap de forma predeterminada.
El arranque en frío se completa en dos etapas:
Preparación de la plataforma: Function Compute inicializa el entorno de ejecución y se prepara para iniciar su código.
Inicio del servidor HTTP: Function Compute ejecuta su comando de inicio. El servidor HTTP debe estar listo en un máximo de 120 segundos.
Configure el comando de inicio
El comando de inicio se define en customRuntimeConfig:
|
Campo |
Descripción |
|
|
El ejecutable que se debe ejecutar |
|
|
Los argumentos que se pasan al ejecutable |
Function Compute concatena command y args para formar el comando de inicio completo.
Suponga que su paquete de código se llama function.zip. A continuación, se muestran la estructura del paquete y el customRuntimeConfig correspondientes para cada entorno de ejecución.
Java 8 o Spring Boot
.
└── demo.jar
customRuntimeConfig:
command:
- java
args:
- '-jar'
- 'demo.jar'
Python 3.7
.
└── server.py
customRuntimeConfig:
command:
- python
args:
- 'server.py'
Node.js 10
.
└── server.js
customRuntimeConfig:
command:
- node
args:
- 'server.js'
PHP 7.4
.
└── server.php
customRuntimeConfig:
command:
- php
args:
- 'server.php'
Requisitos del servidor HTTP
Configure su servidor HTTP para cumplir los requisitos que se indican a continuación. El incumplimiento de cualquiera de estos requisitos hace que Function Compute rechace la conexión o que esta falle.
|
Requisito |
Detalles |
Error si se incumple |
|
Escuchar en la dirección correcta |
Escuche en |
|
|
Usar el puerto configurado |
El puerto de escucha del servidor debe coincidir con el valor de |
|
|
Habilitar keep-alive |
Habilite el modo keep-alive y establezca el tiempo de espera de la conexión en 24 horas como mínimo (el tiempo máximo de ejecución de la función). |
Las conexiones se cortan durante la ejecución |
|
Iniciar en un máximo de 120 segundos |
El servidor HTTP debe estar listo para aceptar conexiones en un plazo de 120 segundos desde su inicio. |
Error de inicio |
Ejemplo: configuración de keep-alive (Node.js con Express)
const server = app.listen(PORT, HOST);
server.timeout = 0; // never timeout
server.keepAliveTimeout = 0; // keep-alive, never timeout
Referencia de error: enlace a 127.0.0.1
Si el servidor HTTP escucha en 127.0.0.1 en lugar de 0.0.0.0, Function Compute no puede conectarse a él y devuelve:
{
"ErrorCode": "FunctionNotStarted",
"ErrorMessage": "TheCA'shttpservercannotbestarted:ContainerStartDuration:25000000000.PingCAfaileddueto:dialtcp21.0.XX.XX:9000:getsockopt:connectionrefusedLogs:2019-11-29T09:53:30.859837462ZListeningonport9000"
}