Les layers regroupent des dépendances partagées, des environnements d'exécution et des extensions de fonction pour les réutiliser entre plusieurs fonctions. Extrayez les bibliothèques communes dans des layers ou utilisez les layers communs de Function Compute afin de réduire la taille de vos packages de code.
Remarques sur l'utilisation
Regroupez tout le contenu du layer dans un fichier ZIP. Les environnements d'exécution de Function Compute extraient les layers dans le répertoire /opt.
Lorsqu'une fonction comporte plusieurs layers, leur contenu fusionne dans le répertoire /opt en ordre inverse. Les fichiers des layers supérieurs écrasent ceux portant le même nom dans les layers inférieurs.
Si le layer contient des bibliothèques binaires ou des exécutables, compilez-les sur un système Linux. Debian 9 est recommandé.
Si une dépendance du layer nécessite des jeux d'instructions spécifiques, utilisez une machine AMD64 ou effectuez une compilation croisée pour garantir la compatibilité avec les environnements d'exécution de Function Compute.
Répertoires des layers par environnement d'exécution
Pour les environnements d'exécution prenant en charge les layers, Function Compute ajoute des répertoires spécifiques au chemin de recherche des dépendances. Si votre archive ZIP de layer respecte la structure de dossiers ci-dessous, le code de la fonction charge les dépendances du layer sans nécessiter le chemin complet.
Directories that can be added in each runtime
|
Environnement d'exécution |
Répertoire |
|
Python |
/opt/python |
|
Node.js |
/opt/nodejs/node_modules |
|
Java |
/opt/java/lib |
|
PHP |
/opt/php |
|
Autres environnements d'exécution (à l'exclusion des environnements personnalisés et Custom Container) |
/opt/bin (PATH) |
|
/opt/lib (LD_LIBRARY_PATH) |
File structures of the ZIP packages in each runtime
File structure after the requests dependency is used for packaging
my-layer-code.zip
└── python
└── requests
Path after the ZIP package is decompressed and deployed
/
└── opt
└── python
└── requestsFile structure after the uuid dependency is used for packaging
my-layer-code.zip
└── nodejs
├── node_modules
│ └── uuid
├── package-lock.json
└── package.json
Path after the ZIP package is decompressed and deployed
/
└── opt
└── nodejs
├── node_modules
│ └── uuid
├── package-lock.json
└── package.jsonFile structure after the jackson-core dependency is used for packaging
my-layer-code.zip
└── java
└── lib
└── commons-lang3-3.12.0.jar
Path after the ZIP package is decompressed and deployed
/
└── opt
└── java
└── lib
└── commons-lang3-3.12.0.jarFile structure after the composer dependency is used for packaging
my-layer-code.zip
└── php
├──composer.json
├──composer.lock
└──vendor
Path after the ZIP file is decompressed and deployed
/
└── opt
└── php
├──composer.json
├──composer.lock
└──vendorConstruire une archive ZIP pour un layer
Regroupez le contenu du layer dans un fichier ZIP. Les environnements d'exécution de Function Compute l'extraient dans le répertoire /opt.
La construction d'une archive ZIP de layer suit la même approche que celle d'un package de code. Les répertoires de bibliothèques du layer doivent respecter les règles standard de conditionnement pour chaque langage. Pour plus d'informations, consultez la section Répertoires des layers par environnement d'exécution. Si vous respectez ces règles, les environnements d'exécution de Function Compute ajoutent automatiquement les chemins de recherche de bibliothèques. Pour personnaliser la structure des répertoires du layer, ajoutez explicitement les chemins de recherche des dépendances dans votre code. Pour plus d'informations, consultez la rubrique Comment référencer des dépendances d'un layer dans un Custom Runtime.
Les onglets suivants expliquent comment construire l'archive ZIP du layer pour chaque environnement d'exécution.
Le langage de programmation installé sur votre machine locale doit correspondre à l'environnement d'exécution Function Compute.
Le répertoire my-layer-code est donné à titre d'exemple. Remplacez-le par votre propre répertoire.
Environnements d'exécution Python runtime
La version de Python installée sur votre machine locale doit correspondre à la version de l'environnement d'exécution Function Compute.
-
Créez un répertoire de travail :
mkdir my-layer-code -
Accédez au répertoire de travail.
cd my-layer-code -
Installez la bibliothèque de dépendances dans my-layer-code/python :
pip install --target ./python ${PackageName}Remplacez ${PackageName} par le nom de la bibliothèque de dépendances. Les options de la commande
pip installsont détaillées dans la référence pip install.Exemple de code :
pip install --target ./python numpyVérifiez la structure de répertoires obtenue :
my-layer-code └── python ├── bin ├── numpy ├── numpy-1.22.4.dist-info └── numpy.libs -
Empaquetez les dépendances depuis le répertoire my-layer-code :
zip -r my-layer-code.zip python
Environnements d'exécution Node.js runtime
La version de Node.js installée sur votre machine locale doit correspondre à la version de l'environnement d'exécution Function Compute.
-
Créez un répertoire de travail :
mkdir my-layer-code -
Accédez au répertoire de travail.
cd my-layer-code -
Installez la bibliothèque de dépendances dans my-layer-code/nodejs :
npm install --prefix ./nodejs --save ${PackageName}Remplacez
${PackageName}par le nom de la bibliothèque de dépendances. Les options de la commandenpm installsont détaillées dans la référence npm-install.Exemple de code :
npm install --prefix ./nodejs --save uuidVérifiez la structure de répertoires obtenue :
my-layer-code └── nodejs ├── node_modules │ └── uuid ├── package-lock.json └── package.json -
Empaquetez la dépendance depuis my-layer-code :
zip -r my-layer-code.zip nodejs
Environnements d'exécution Java runtime
-
Créez un répertoire de travail :
mkdir my-layer-code/java -
Accédez au répertoire de travail.
cd my-layer-code/java -
Installez les dépendances à l'aide de Maven.
-
Créez le fichier pom.xml dans le répertoire my-layer-code/java.
Exemple :
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven.util</groupId> <artifactId>install-layer</artifactId> <version>1.0</version> <!-- The Maven dependencies to download --> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> </dependencies> <build> <plugins> <!-- Maven-related download plug-ins --> <plugin> <artifactId>maven-dependency-plugin</artifactId> <configuration> <!-- Specify whether to exclude indirect dependencies. Default value: false. --> <excludeTransitive>false</excludeTransitive> <!-- Specify whether to remove the version information in the suffix of the dependency JAR package. Default value: false. --> <stripVersion>false</stripVersion> <!-- The path of the output file--> <outputDirectory>./lib</outputDirectory> </configuration> </plugin> </plugins> </build> </project>Description
Le package de dépendances à installer est
org.apache.commons.lang3.Utilisez
maven-dependency-pluginpour copier le package de dépendances dans le répertoire /java/lib.
-
Installez les dépendances dans le répertoire my-layer-code/java :
mvn dependency:copy-dependencies
Vérifiez la structure de répertoires obtenue :
my-layer-code └── java └── lib └── commons-lang3-3.12.0.jar -
-
Empaquetez les dépendances depuis le répertoire my-layer-code :
zip -r my-layer-code.zip java
Environnements d'exécution PHP runtime
-
Créez un répertoire de travail :
mkdir -p my-layer-code/php -
Accédez au répertoire de travail.
cd my-layer-code/php -
(Recommandé) Utilisez Composer pour installer les dépendances.
-
Créez le fichier composer.json dans le répertoire my-layer-code/php.
Exemple :
{ "require": { "aliyunfc/fc-php-sdk": "~1.2", "alibabacloud/fnf": "^1.7" } } -
Installez les dépendances.
composer install
Vérifiez la structure de répertoires obtenue :
my-layer-code └─php ├──composer.json ├──composer.lock └──vendor -
-
Empaquetez les dépendances depuis le répertoire my-layer-code :
zip -r my-layer-code.zip php
Créer un layer personnalisé
Créer un layer personnalisé dans la console Function Compute
Prérequis
Vous devez avoir créé une fonction. Pour plus d'informations, consultez la rubrique Créer une fonction.
Procédure
Pour savoir comment construire une archive ZIP de layer, reportez-vous à la section Construire une archive ZIP pour un layer.
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez .
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Layers, cliquez sur Create Layer.
-
Sur la page Create Layer, spécifiez les paramètres requis puis cliquez sur Create.
Paramètre
Description
Name
Saisissez un nom pour le layer à créer.
Description
Saisissez une description pour identifier le layer.
Compatible Runtime
Sélectionnez les environnements d'exécution compatibles.
Layer Upload Method
Choisissez une méthode de téléchargement :
-
Upload Layer in ZIP Package : sélectionnez le fichier ZIP du layer.
-
Upload Layer in Folder : sélectionnez le dossier contenant le fichier ZIP du layer.
-
Upload Layer Using OSS : spécifiez le Bucket Name et l'Object Name du fichier ZIP du layer dans OSS.
-
Build Dependency Layer Online : sélectionnez un Build Environment et téléchargez
package.jsonourequirements.txt.RemarqueSeuls les environnements d'exécution Python et Node.js prennent en charge les constructions en ligne. Limite de téléchargement : 500 Mo, délai d'expiration de 15 minutes.
Le système génère la version 1 du layer après sa création.
-
-
Créez une nouvelle version.
RemarqueVous ne pouvez pas modifier un layer créé ni ses versions. Pour mettre à jour la configuration d'un layer, créez un nouveau layer ou une nouvelle version. Si une version de layer référencée a été supprimée, supprimez la référence avant de mettre à jour la configuration du layer.
Sur la page Layers, cliquez sur le nom du layer ou sur Versions dans la colonne Actions.
Dans la section Versions, cliquez sur Create Version.
Sélectionnez un environnement d'exécution, téléchargez le nouveau code du layer, puis cliquez sur Create.
Créer un layer personnalisé à l'aide de Serverless Devs
Prérequis
Procédure
Pour savoir comment construire une archive ZIP de layer, reportez-vous à la section Construire une archive ZIP pour un layer.
-
Créez un layer :
s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,Java11,custom --region cn-hangzhou --layer-name my-layerDescription :
--code: chemin du package de code.--compatible-runtime: environnements d'exécution compatibles pour le layer.--layer-name: nom du layer.
Un message de succès renvoie l'ARN du layer, composé de trois parties séparées par
#: l'ID du compte, le nom du layer et la version du layer. Connectez-vous à la console Function Compute pour consulter les détails du layer.
-
Créez une nouvelle version pour le layer :
s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,java11,custom --region cn-hangzhou --layer-name my-layerRemarqueVous ne pouvez pas modifier un layer créé ni ses versions. Pour mettre à jour la configuration d'un layer, créez un nouveau layer ou une nouvelle version. Si une version de layer référencée a été supprimée, supprimez la référence avant de mettre à jour la configuration du layer.
Supprimer des layers et des versions de layer
Supprimez les layers ou versions de layer inutilisés. Les layers supprimés ne sont plus visibles ni référençables dans la configuration des fonctions, mais les fonctions qui les référençaient déjà continuent de s'exécuter.
Connectez-vous à la console Function Compute.
Dans le volet de navigation de gauche, choisissez .
Dans la barre de navigation supérieure, sélectionnez une région.
-
Sur la page Layers, supprimez un layer ou une version de layer selon vos besoins métier.
-
Supprimer un layer
Localisez le layer concerné et cliquez sur Delete dans la colonne Actions. Cochez l'option I want to delete all of the N versions at the layer, puis cliquez sur Delete.
-
Supprimer une version de layer
Cliquez sur le nom du layer. Dans la section Versions, localisez la version souhaitée et cliquez sur Delete dans la colonne Actions. Dans le message Confirm, cliquez sur Delete.
-
Références
Utilisez le paramètre
layerspour configurer les layers lors de la création ou de la mise à jour de fonctions. Pour plus d'informations, consultez les rubriques CreateFunction et UpdateFunction.Pour en savoir plus sur l'utilisation d'un layer personnalisé dans une fonction, consultez les rubriques Gérer les layers et Configurer un layer public pour une fonction.