WebIDE se ejecuta en el mismo entorno que Function Compute. Por lo tanto, los paquetes que instale en la terminal de WebIDE funcionan exactamente igual durante la ejecución. En este tema se explica cómo instalar y empaquetar dependencias de terceros para los runtimes de Python, Node.js, PHP y personalizados.
Elección de un método de instalación
Para cada runtime, puede instalar las dependencias mediante uno de estos dos métodos:
|
Método |
Cuándo utilizarlo |
Directorio |
|
Instalar directamente en el directorio del código |
Dependencias pequeñas y despliegues frecuentes |
|
|
Empaquetar las dependencias como una capa |
Dependencias grandes con cambios poco frecuentes |
Específico del runtime (consulte las secciones siguientes) |
Los conjuntos grandes de dependencias aumentan la latencia de arranque en frío, el tamaño del paquete de código de la función y el tiempo de despliegue. Al empaquetarlos como una capa, se separa el ciclo de vida de las dependencias del código de su función. Así, solo actualiza la capa cuando cambian las dependencias, no en cada despliegue.
Requisitos previos
Antes de empezar, compruebe que cuenta con lo siguiente:
Una función creada en Function Compute con una instancia de WebIDE en ejecución.
Acceso a la terminal de WebIDE.
Python
Los runtimes de Python incluyen un conjunto de built-in Python modules. Para cualquier módulo que no esté en esa lista, instálelo desde la terminal de WebIDE.
Instalación directa en /code
Ejecute el siguiente comando en el directorio /code de la terminal de WebIDE:
pip install -t . flask
# Or, using a requirements file:
pip install -t . -r requirements.txt
Al instalar los paquetes directamente en /code, estos quedan junto al código de su función. Si instala muchos paquetes, localizar index.py en el administrador de recursos se vuelve difícil, ya que el directorio se llena de archivos y carpetas de los paquetes. Si esto le preocupa, instálelos en un directorio independiente.
Instalación en un directorio independiente
Para mantener limpio el directorio del código, instale los paquetes en un subdirectorio /python y luego establezca una variable de entorno para que el runtime pueda encontrarlos:
mkdir python
cd python
pip install -t . flask
Agregue la variable de entorno PYTHONPATH=/code/python a la configuración de su función.
Empaquetado como una capa
Si el conjunto de dependencias es grande, empaquete el directorio /python como una capa. Esto reduce el tamaño del paquete de código de la función y acelera los despliegues posteriores.
Cuando usa/pythoncomo directorio de la capa, Function Compute lo agrega automáticamente a la ruta de búsqueda de Python. No necesita establecerPYTHONPATH=/opt/python.
Ejecute los siguientes comandos en orden:
# Step 1: Archive the python directory
zip -ry python.zip python
# Step 2: Publish the archive as a layer
s cli fc3 layer publish \
--layer-name myPythonLibLayer \
--code /code/python.zip \
--compatible-runtime python3.10,python3.9,python3.6,custom,custom.debian10 \
--region cn-hangzhou \
-a default
El comando muestra el ARN de la capa; por ejemplo:
395da10bf789aa49dd035db01bab****#myPythonLibLayer#1
Una vez publicada la capa:
Actualice la configuración de su función para hacer referencia a la nueva versión de la capa.
-
Elimine el directorio local
/pythony el archivo comprimido para reducir el tamaño del paquete de código de la función:rm -rf python python.zip Despliegue la función actualizada.
Para obtener instrucciones sobre cómo crear capas y hacer referencia a ellas, consulte Create a custom layer y Configure a custom layer.
Node.js
Los runtimes de Node.js incluyen un conjunto de built-in Node.js modules. Para cualquier módulo que no esté en esa lista, instálelo desde la terminal de WebIDE.
Instalación directa en /code
Compruebe que package.json exista en /code y luego ejecute:
npm install
Empaquetado como una capa
Si el conjunto de dependencias es grande, mueva node_modules a un directorio /nodejs y empáquelo como una capa:
# Step 1: Move node_modules into the nodejs directory
mkdir nodejs
mv node_modules ./nodejs
# Step 2: Archive the directory
zip -ry nodejs.zip nodejs
# Step 3: Publish the archive as a layer
s cli fc3 layer publish \
--layer-name myNodeLibLayer \
--code /code/nodejs.zip \
--compatible-runtime nodejs16,nodejs14,nodejs12,nodejs10,custom,custom.debian10 \
--region cn-hangzhou \
-a default
El comando muestra el ARN de la capa; por ejemplo:
395da10bf789aa49dd035db01bab****#myNodeLibLayer#1
Una vez publicada la capa:
Actualice la configuración de su función para hacer referencia a la nueva versión de la capa.
-
Elimine el directorio local
/nodejsy el archivo comprimido:rm -rf nodejs nodejs.zip Despliegue la función actualizada.
Para obtener instrucciones sobre cómo crear capas y hacer referencia a ellas, consulte Create a custom layer y Configure a custom layer.
PHP
El proceso de instalación para PHP sigue el mismo patrón que el de Python y Node.js. La diferencia radica en el directorio de la capa: PHP utiliza /opt/php en lugar de /python o /nodejs.
Para consultar la lista completa de directorios de capa por runtime, vea la sección "Directories that can be added in each runtime" en Create a custom layer.
Runtimes personalizados
Si su runtime personalizado usa Python, Node.js o PHP: siga los pasos de las secciones correspondientes anteriores.
Si su runtime personalizado usa un lenguaje compilado como Java o Go: utilice el SDK proporcionado por WebIDE para compilar y empaquetar sus dependencias.