WebIDE s'exécute dans le même environnement que Function Compute. Les paquets installés depuis le terminal WebIDE se comportent donc de manière identique lors de l'exécution. Cette rubrique explique comment installer et empaqueter des dépendances tierces pour les runtimes Python, Node.js, PHP et personnalisés.
Choisir une méthode d'installation
Pour chaque runtime, vous pouvez installer des dépendances selon deux méthodes :
| Méthode | Cas d'usage | Répertoire |
|---|---|---|
| Installation directe dans le répertoire du code | Dépendances légères, déploiements fréquents | /code |
| Empaquetage des dépendances sous forme de couche | Dépendances volumineuses, modifications peu fréquentes | Spécifique au runtime (voir les sections ci-dessous) |
Un nombre élevé de dépendances augmente la latence de démarrage à froid, la taille du paquet de code de la fonction et la durée de déploiement. Les empaqueter sous forme de couche sépare le cycle de vie des dépendances de celui du code de votre fonction. Vous mettez ainsi à jour la couche uniquement lorsque les dépendances changent, et non à chaque déploiement.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une fonction créée dans Function Compute avec une instance WebIDE en cours d'exécution
Un accès au terminal WebIDE
Python
Les runtimes Python incluent un ensemble de modules Python intégrés. Pour tout module absent de cette liste, installez-le depuis le terminal WebIDE.
Installation directe dans /code
Exécutez la commande suivante dans le répertoire /code du terminal WebIDE :
pip install -t . flask
# Or, using a requirements file:
pip install -t . -r requirements.txt
L'installation directe de paquets dans /code les place aux côtés du code de votre fonction. Si de nombreux paquets sont installés, le répertoire se remplit de fichiers et de dossiers, ce qui complique la localisation d'index.py dans le gestionnaire de ressources. Dans ce cas, privilégiez une installation dans un répertoire distinct.
Installation dans un répertoire distinct
Pour garder votre répertoire de code propre, installez les paquets dans un sous-répertoire /python, puis définissez une variable d'environnement afin que le runtime puisse les trouver :
mkdir python
cd python
pip install -t . flask
Ajoutez la variable d'environnement PYTHONPATH=/code/python à la configuration de votre fonction.
Empaquetage sous forme de couche
Si l'ensemble des dépendances est volumineux, empaquetez le répertoire /python sous forme de couche. Cela réduit la taille du paquet de code de la fonction et accélère les déploiements ultérieurs.
Lorsque vous utilisez/pythoncomme répertoire de couche, Function Compute l'ajoute automatiquement au chemin de recherche Python. Il est donc inutile de définirPYTHONPATH=/opt/python.
Exécutez les commandes suivantes dans l'ordre :
# 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
La commande retourne l'ARN de la couche, par exemple :
395da10bf789aa49dd035db01bab****#myPythonLibLayer#1
Une fois la couche publiée :
Mettez à jour la configuration de votre fonction pour référencer la nouvelle version de la couche.
-
Supprimez le répertoire local
/pythonet l'archive afin de réduire la taille du paquet de code de la fonction :rm -rf python python.zip Déployez la fonction mise à jour.
Pour plus d'informations sur la création et l'utilisation de couches, consultez Créer une couche personnalisée et Configurer une couche personnalisée.
Node.js
Les runtimes Node.js incluent un ensemble de modules Node.js intégrés. Pour tout module absent de cette liste, installez-le depuis le terminal WebIDE.
Installation directe dans /code
Assurez-vous que le fichier package.json existe dans /code, puis exécutez la commande suivante :
npm install
Empaquetage sous forme de couche
Si l'ensemble des dépendances est volumineux, déplacez node_modules dans un répertoire /nodejs et empaquetez-le sous forme de couche :
# 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
La commande retourne l'ARN de la couche, par exemple :
395da10bf789aa49dd035db01bab****#myNodeLibLayer#1
Une fois la couche publiée :
Mettez à jour la configuration de votre fonction pour référencer la nouvelle version de la couche.
-
Supprimez le répertoire local
/nodejset l'archive :rm -rf nodejs nodejs.zip Déployez la fonction mise à jour.
Pour plus d'informations sur la création et l'utilisation de couches, consultez Créer une couche personnalisée et Configurer une couche personnalisée.
PHP
Le processus d'installation pour PHP suit la même logique que pour Python et Node.js. La différence réside dans le répertoire de la couche : PHP utilise /opt/php au lieu de /python ou /nodejs.
Pour consulter la liste complète des répertoires de couches par runtime, reportez-vous à la section « Répertoires pouvant être ajoutés dans chaque runtime » de la rubrique Créer une couche personnalisée.
Runtimes personnalisés
Si votre runtime personnalisé utilise Python, Node.js ou PHP : suivez les étapes décrites dans les sections correspondantes ci-dessus.
Si votre runtime personnalisé utilise un langage compilé tel que Java ou Go : utilisez le SDK fourni par WebIDE pour compiler et empaqueter vos dépendances.