Tous les produits
Search
Centre de documentation

Function Compute:Create a custom layer

Dernière mise à jour :Sep 09, 2026

Les layers fournissent des bibliothèques de dépendances partagées, des environnements d'exécution et des extensions de fonction pour vos fonctions. Extrayez les bibliothèques communes dont dépendent vos fonctions dans un layer, ou utilisez les layers publics de Function Compute, afin de réduire la taille du package de code lors du déploiement ou de la mise à jour d'une fonction. Cette rubrique explique le fonctionnement des layers, les répertoires pris en charge par chaque runtime, comment construire un fichier ZIP de layer, ainsi que comment créer et supprimer un layer personnalisé.

Fonctionnement

Lorsque vous construisez un layer, empaquetez tout son contenu dans un fichier ZIP. Au moment de l'exécution, Function Compute extrait le contenu du layer et le déploie dans le répertoire /opt. Lorsque vous configurez plusieurs layers pour une fonction, le contenu des layers est fusionné dans /opt dans l'ordre inverse de leur configuration. Si un fichier d'un layer porte le même nom qu'un fichier d'un autre layer, le fichier du layer configuré en premier écrase celui du layer configuré ensuite.

Par exemple, si vous configurez Layer 1 et Layer 2 pour une fonction, l'instance de fonction charge d'abord Layer 2, puis Layer 1 au démarrage, et extrait les deux layers dans le répertoire /opt. Dans /opt, le contenu de Layer 1 apparaît en premier et celui de Layer 2 en second. Si Layer 1 et Layer 2 contiennent des fichiers portant le même nom, les fichiers de Layer 1 écrasent ceux de Layer 2.

Exigences de construction :

  • Si un layer contient des bibliothèques binaires ou des exécutables, construisez-le sous Linux (Debian 9 recommandée).

  • Function Compute s'exécute sur une architecture x86_64. Pour les dépendances liées au jeu d'instructions, utilisez une machine x86_64 ou compilez de manière croisée pour garantir la compatibilité.

Répertoires pris en charge par runtime

Si un runtime prend en charge les layers, Function Compute ajoute les répertoires suivants au chemin de recherche des dépendances du langage du runtime. Structurez votre package ZIP de layer pour qu'il corresponde à ces chemins, afin que le code de votre fonction puisse accéder au contenu du layer sans spécifier de chemins explicites. Pour plus de détails sur la construction d'un fichier ZIP de layer, consultez Construire un fichier ZIP de layer.

Runtime Chemin du répertoire
Python /opt/python
Node.js /opt/nodejs/node_modules
Java /opt/java/lib
PHP /opt/php
Autres runtimes (à l'exception du runtime personnalisé et du runtime de conteneur personnalisé) /opt/bin (PATH), /opt/lib (LD_LIBRARY_PATH)
Runtime personnalisé et runtime de conteneur personnalisé Aucun

Si vous utilisez une structure de répertoires personnalisée, ajoutez explicitement le chemin de recherche des dépendances dans le code de votre fonction. Pour plus de détails, consultez Comment référencer les dépendances d'un layer dans un runtime personnalisé.

Structure du fichier ZIP du layer

Les exemples suivants illustrent la structure ZIP requise et les chemins de déploiement correspondants pour chaque runtime.

Python — empaquetage avec la dépendance requests :

my-layer-code.zip
└── python
    └── requests

Extracted to:
/opt/python/requests

Node.js — empaquetage avec la dépendance uuid :

my-layer-code.zip
└── nodejs
    ├── node_modules
    │   └── uuid
    ├── package-lock.json
    └── package.json

Extracted to:
/opt/nodejs/node_modules/uuid

Java — empaquetage avec la dépendance commons-lang3 :

my-layer-code.zip
└── java
    └── lib
        └── commons-lang3-3.12.0.jar

Extracted to:
/opt/java/lib/commons-lang3-3.12.0.jar

PHP — empaquetage avec les dépendances Composer :

my-layer-code.zip
└── php
    ├── composer.json
    ├── composer.lock
    └── vendor

Extracted to:
/opt/php/vendor

Construire un fichier ZIP de layer

La construction d'un fichier ZIP de layer est similaire à celle d'un package de code. Pour que Function Compute charge correctement les bibliothèques publiées dans un layer au moment de l'exécution, la structure des répertoires du code de la bibliothèque doit respecter les conventions standard de chaque langage. Pour plus de détails, consultez Répertoires pris en charge par runtime. Si vous empaquetez les dépendances de votre layer comme indiqué, Function Compute ajoute automatiquement le chemin de recherche des dépendances pour chaque langage, et vous n'avez pas besoin de spécifier le chemin complet.

Pour construire un fichier ZIP de layer pour chaque runtime, suivez les étapes ci-dessous :

Remarque
  • Lorsque vous construisez un layer localement, utilisez la même version du langage de programmation que celle du runtime sélectionné dans Function Compute.

  • Le répertoire de travail my-layer-code créé dans les étapes suivantes est donné à titre d'exemple. Vous pouvez remplacer le nom du répertoire selon vos besoins.

Runtime Python

Remarque

Lorsque vous construisez un layer localement, utilisez la même version de Python que celle du runtime Python sélectionné dans Function Compute.

  1. Créez un répertoire de travail :

    mkdir my-layer-code
    cd my-layer-code
  2. Installez les dépendances dans le sous-répertoire python :

    pip install --target ./python ${PackageName}

    Pour plus de détails sur la commande pip install, consultez pip install.

    Exemple avec numpy :

    pip install --target ./python numpy

    Après l'installation, la structure des répertoires se présente comme suit :

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs
  3. Empaquetez les dépendances depuis le répertoire my-layer-code :

    zip -r my-layer-code.zip python

Runtime Node.js

Remarque

Lorsque vous construisez un layer localement, utilisez la même version de Node.js que celle du runtime Node.js sélectionné dans Function Compute.

  1. Créez un répertoire de travail :

    mkdir my-layer-code
    cd my-layer-code
  2. Installez les dépendances dans le sous-répertoire nodejs :

    npm install --prefix ./nodejs --save ${PackageName}

    ${PackageName} représente le nom du package de dépendance que vous souhaitez installer. Pour plus de détails sur la commande npm install, consultez npm-install.

    Exemple avec uuid :

    npm install --prefix ./nodejs --save uuid

    Après l'installation, la structure des répertoires se présente comme suit :

    my-layer-code
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └── package.json
  3. Empaquetez les dépendances depuis le répertoire my-layer-code :

    zip -r my-layer-code.zip nodejs

Runtime Java

  1. Créez un répertoire de travail :

    mkdir my-layer-code/java
    cd my-layer-code/java
  2. Créez un fichier pom.xml qui déclare vos dépendances. L'exemple suivant installe commons-lang3 et le copie dans ./lib à l'aide du plugin maven-dependency-plugin :

    <?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>
        <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>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <configuration>
                        <!-- Include transitive dependencies -->
                        <excludeTransitive>false</excludeTransitive>
                        <!-- Keep version suffixes in JAR file names -->
                        <stripVersion>false</stripVersion>
                        <!-- Output directory for downloaded JARs -->
                        <outputDirectory>./lib</outputDirectory>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
  3. Installez les dépendances :

    mvn dependency:copy-dependencies

    Après l'installation, la structure des répertoires se présente comme suit :

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. Empaquetez les dépendances depuis le répertoire my-layer-code :

    zip -r my-layer-code.zip java

Runtime PHP

  1. Créez un répertoire de travail :

    mkdir -p my-layer-code/php
    cd my-layer-code/php
  2. Créez un fichier composer.json qui déclare vos dépendances. Exemple :

    {
      "require": {
        "aliyunfc/fc-php-sdk": "~1.2",
        "alibabacloud/fnf": "^1.7"
      }
    }
  3. Installez les dépendances :

    composer install

    Après l'installation, la structure des répertoires se présente comme suit :

    my-layer-code
    └── php
        ├── composer.json
        ├── composer.lock
        └── vendor
  4. Empaquetez les dépendances depuis le répertoire my-layer-code :

    zip -r my-layer-code.zip php

Créer un layer personnalisé

Utilisation de la console

Prérequis

Avant de commencer, assurez-vous d'avoir :

Étapes

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Advanced Features > Layers.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Layers, cliquez sur Create Layer.

  3. Configurez les paramètres suivants, puis cliquez sur Create.

    Paramètre Description
    Name Saisissez un nom pour le layer.
    Description Saisissez une description pour le layer afin de vous aider à distinguer les layers entre eux.
    Compatible Runtime Sélectionnez les runtimes compatibles avec ce layer.
    Layer Upload Method Sélectionnez la méthode de téléchargement des dépendances du layer : Upload Layer in ZIP Package — téléchargez un fichier .zip (max 500 Mo) ; Upload Layer in Folder — sélectionnez un dossier que Function Compute compressera en fichier .zip (max 500 Mo) ; Upload Layer Using OSS — spécifiez le Bucket Name et l'Object Name du fichier .zip dans Object Storage Service (OSS) (max 500 Mo) ; Build Dependency Layer Online — si votre fonction est développée en Python ou Node.js, ou si vous devez installer des bibliothèques système légères, vous pouvez construire le layer en ligne. Saisissez le contenu du fichier de dépendance (requirements.txt pour Python ou package.json pour Node.js) dans la zone de saisie ci-dessous. Après soumission de la demande, Function Compute installe automatiquement les packages de dépendances au niveau du langage et les bibliothèques système, ce qui simplifie la gestion des dépendances du layer.
    Build Environment Apparaît lorsque Build Dependency Layer Online est sélectionné. Choisissez le runtime pour la construction du layer. Actuellement, seuls les runtimes Python et Node.js sont pris en charge.
    apt command Apparaît lorsque Build Dependency Layer Online est sélectionné. Saisissez les noms des packages après apt install pour installer les packages système dans le layer.

    Une fois le layer créé, une version du layer est automatiquement générée. Le numéro de version commence à 1 et s'incrémente à chaque nouvelle version.

    Remarque

    Si le bucket OSS est chiffré par Key Management Service (KMS), le rôle lié au service Function Compute (AliyunServiceRoleForFC) peut ne pas avoir l'autorisation d'accéder aux objets chiffrés, ce qui entraîne une erreur AccessDenied. Pour résoudre ce problème, mettez à jour la stratégie de clé dans la console KMS pour accorder l'accès au rôle AliyunServiceRoleForFC. Pour plus de détails, consultez Modifier une stratégie de clé. Après la mise à jour de la stratégie de clé, réessayez le téléchargement du layer pour vérifier que la modification des autorisations prend effet.

  4. Pour ajouter une nouvelle version à un layer existant :

    Remarque

    Vous ne pouvez pas modifier un layer existant ni aucune de ses versions. Pour mettre à jour un layer, créez un nouveau layer ou une nouvelle version de layer. Si une version de layer référencée est supprimée, supprimez la référence avant de mettre à jour la configuration du layer.

    1. Sur la page Layers, cliquez sur le nom du layer cible.

    2. Dans la section Version Management, cliquez sur Create Version.

    3. Sélectionnez un runtime, téléchargez le nouveau code du layer, puis cliquez sur Create.

Utilisation de Serverless Devs

Prérequis

Avant de commencer, assurez-vous d'avoir :

Étapes

  1. Exécutez la commande suivante pour créer un layer :

    s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,java11,custom --region cn-hangzhou --layer-name my-layer

    Le tableau suivant décrit les paramètres de la commande.

    Paramètre Description
    --code Chemin d'accès au package de code du layer.
    --compatible-runtime Liste des runtimes compatibles, séparés par des virgules.
    --layer-name Nom du layer.

    Une fois le layer créé, la commande renvoie l'Alibaba Cloud Resource Name (ARN) du layer. L'ARN se compose de trois parties séparées par des dièses (#) : l'identifiant de l'ID de compte, le nom du layer et la version du layer. Vous pouvez également vous connecter à la console Function Compute pour afficher les informations sur le layer créé.

  2. Pour ajouter une nouvelle version à un layer existant, exécutez la même commande avec le même nom de layer :

    s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,java11,custom --region cn-hangzhou --layer-name my-layer
    Remarque

    Vous ne pouvez pas modifier un layer existant ni aucune de ses versions. Pour mettre à jour un layer, créez un nouveau layer ou une nouvelle version de layer. Si une version de layer référencée est supprimée, supprimez la référence avant de mettre à jour la configuration du layer.

Supprimer un layer ou une version de layer

Vous pouvez supprimer les layers ou les versions de layer dont vous n'avez plus besoin. Un layer supprimé ne peut plus être consulté ni référencé dans les configurations de fonction. Toutefois, l'exécution des fonctions qui référencent déjà le layer supprimé n'est pas affectée.

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Advanced Features > Layers.

  2. Dans la barre de navigation supérieure, sélectionnez une région.

  3. Sur la page Layers, supprimez un layer ou une version de layer :

    • Supprimer un layer : localisez le layer cible, cliquez sur Delete dans la colonne Actions, cochez la case de confirmation, puis cliquez sur Delete.

    • Supprimer une version de layer : cliquez sur le nom du layer cible. Dans la section Version Management de la page des détails du layer, localisez la version cible, cliquez sur Delete dans la colonne Actions, puis cliquez sur Delete dans la boîte de dialogue Confirm.

Étapes suivantes

  • Après avoir créé un layer personnalisé, associez-le à une fonction via la console Function Compute ou Serverless Devs, afin que la fonction puisse accéder aux ressources fournies par le layer. Pour plus de détails, consultez Configurer un layer personnalisé.

  • Vous pouvez également gérer et configurer les layers en définissant le paramètre layers lors de la création ou de la mise à jour d'une fonction via l'API ou le SDK. Pour plus de détails, consultez CreateFunction et UpdateFunction.

  • Si les dépendances de votre layer incluent des bibliothèques partagées, ou si votre environnement local est incompatible avec le runtime Function Compute, vous ne pouvez pas construire le layer dans la console ou localement. Construisez plutôt le layer à partir d'un Dockerfile. Pour plus de détails, consultez Utiliser un Dockerfile pour construire un layer.