Implementación de una función mediante una imagen de contenedor
Información general
Puede empaquetar y cargar directamente imágenes de contenedores. Las imágenes son cargadas e iniciadas por la plataforma y se pueden llamar de manera similar a las funciones HTTP. A diferencia del modo de carga de código anterior, puede usar un paquete de código personalizado, que es flexible y reduce los costos de migración. Puede crear imágenes personalizadas tanto para funciones de evento como para las de HTTP.
- Descarga de imágenes
Las imágenes se almacenan en SWR y solo pueden ser descargadas por los usuarios con el permiso de SWR Admin. FunctionGraph llamará a la API de SWR para generar y establecer comandos de inicio de sesión temporales antes de crear instancias.
- Definición de variables de entorno
Se admite la configuración de cifrado y las variables de entorno. Para más detalles, consulte Configuración de variables de entorno.
- Conexión de discos de datos externos
Se pueden conectar con los discos de datos externos. Para más detalles, consulte Configuración del montaje en disco.
- Facturación
No se le facturará cuando descargue imágenes o espere a que las imágenes estén listas.
- Instancias reservadas:
Se admiten las instancias reservadas. Para más detalles, consulte Gestión de instancias reservadas.
Los contenedores de usuario se iniciarán usando UID 1003 y GID 1003, que son los mismos que otros tipos de funciones.
Prerrequisitos:
Ha creado una delegación con los permisos de SWR Admin haciendo referencia Configuración de permisos de delegación. Las imágenes se almacenan en SWR, y solo los usuarios con este permiso pueden invocar y extraer imágenes.
Procedimiento
- Inicie sesión en la consola de FunctionGraph. En el panel de navegación, seleccione Functions > Function List.
- En la página Function List, haga clic en Create Function en la esquina superior derecha.
- Seleccione Use container image. Para más detalles, consulte Tabla 1.
Figura 1 Creación de una función mediante una imagen contenedora
Tabla 1 Descripción del parámetro Parámetro
Descripción
*Function Type
Seleccione un tipo de función.
- Funciones de eventos: se activan por activadores.
- Funciones HTTP: se activan una vez que las solicitudes HTTP se envían a URLs específicas.
NOTA:
- Las funciones HTTP no distinguen entre lenguajes de programación. El controlador debe estar establecido en el archivo bootstrap. Puede escribir directamente el comando startup y permitir el acceso a través del puerto 8000.
- Las funciones HTTP solo admiten activadores APIG y APIC.
- Para obtener más información sobre cómo usar las funciones HTTP, consulte Creación de una función HTTP.
*Function Name
Nombre de la función, que debe cumplir los siguientes requisitos:
- Consta de 1 a 60 caracteres y puede contener letras, dígitos, guiones (-) y guiones bajos (_).
- Comienza con una letra y termina con una letra o dígito.
*Enterprise Project
Seleccione un proyecto de empresa creado y agréguele la función. De forma predeterminada, se selecciona default.
NOTA:Si EPS no está habilitado, este parámetro no estará disponible. Para obtener más información, consulte Habilitación de la función del proyecto empresarial.
Container Image
Introduzca una URL de imagen, es decir, la ubicación de la imagen contenedora. Puede hacer clic en View Image para ver imágenes privadas y compartidas.
Imagen en SWR, por ejemplo, swr.myhuaweicloud.com/my_group/my_image:latest.
Container Image Override
- CMD: comando de inicio de contenedor. Ejemplo: /bin/sh. Si no se especifica ningún comando, se usará el punto de entrada o CMD en la configuración de imagen. Introduzca uno o más comandos separados por comas (,).
- Args: parámetro de inicio de contenedor. Ejemplo: -args,value1. Si no se especifica ningún argumento, se usará CMD en la configuración de imagen. Introduzca uno o más argumentos separados por comas (,).
- Working Dir: directorio de trabajo que ejecuta un contenedor. Si no se especifica ningún directorio, se utilizará el directorio en la configuración de la imagen. El directorio debe comenzar con una barra diagonal (/).
- User ID: ID de usuario para ejecutar la imagen. Si no se especifica ningún ID de usuario, se usará el valor por defecto 1003.
- Group ID: ID de grupo de usuario. Si no se especifica ningún ID de grupo de usuario, se usará el valor por defecto 1003.
Agency
Seleccione una delegación con permisos de SWR Admin. Para crear una delegación, consulte Creación de una delegación.
- Command, Args, y Working dir pueden contener hasta 5120 caracteres.
- Después de crear una función, puede determinar si desea habilitar la inicialización. Si la inicialización está habilitada para una función, se invocará un inicializador especificado para comenzar la función y, a continuación, se invocará un controlador para procesar solicitudes. Para más detalles, consulte Configuración de la inicialización.
- Si la inicialización está habilitada, se accederá a 127.0.0.1:8000/init cuando se inicie la imagen por primera vez, y se accederá a 127.0.0.1:8000/invoke durante las llamadas a la API posteriores.
- La imagen debe ser pública.
- El puerto de ejecución de la función HTTP se establece en 8000.
Código de muestra
Lo siguiente utiliza NodeJS Express como ejemplo. Durante la inicialización de la función, el FunctionGraph utiliza el método POST para acceder a la ruta /init (opcional). Cada vez que se llama a una función, FunctionGraph utiliza el método POST para acceder a la ruta /invoke. La función obtiene context desde req.headers, obtiene event desde req.body y devuelve las estructuras de respuesta HTTP como resultado.
const express = require('express'); const app = express(); const PORT = 8000; app.post('/init', (req, res) => { res.send('Hello init\n'); }); app.post('/invoke', (req, res) => { res.send('Hello invoke\n'); }); app.listen(PORT, () => { console.log(`Listening on http://localhost:${PORT}`); });
Diferencias entre imágenes de contenedores, funciones de eventos y funciones HTTP
Artículo de comparación |
Función de evento |
Función HTTP |
Imagen del contenedor |
---|---|---|---|
Lenguaje |
Cualquier lenguaje |
Cualquier lenguaje |
Cualquier lenguaje |
Modo de inicio |
Inicio del proceso |
Inicio del proceso |
Inicio de contenedores |
Entorno |
Entornos especificados |
Entornos especificados |
Alta flexibilidad y personalización |
Modo de conexión de FunctionGraph |
Sirve como un cliente de HTTP |
Sirve como un servidor de HTTP |
Sirve como un servidor de HTTP |
Modo de implementación de dependencias |
Capa |
Capa |
En la imagen |
Latencia de arranque en frío |
Corto |
Corto |
Largo |