Tous les produits
Search
Centre de documentation

Function Compute:Créer une couche personnalisée

Dernière mise à jour :Aug 12, 2026

Les couches permettent d'empaqueter séparément du code de vos fonctions les bibliothèques de dépendances partagées, les environnements d'exécution et les extensions. Associer une couche à une fonction réduit la taille du package de déploiement et permet de partager des dépendances entre plusieurs fonctions sans les dupliquer.

Principales raisons d'utiliser des couches :

  • Réduire la taille des packages de déploiement. Déplacez les dépendances partagées hors de chaque package de fonction vers une couche dédiée.

  • Partager des dépendances entre fonctions. Une même couche peut être associée à n'importe quel nombre de fonctions de votre compte.

  • Séparer la logique métier des dépendances. Mettez à jour indépendamment les dépendances et le code des fonctions.

  • Utiliser l'éditeur de code en ligne. Les packages de déploiement volumineux bloquent l'éditeur de la console ; les couches maintiennent une taille de package réduite.

Fonctionnement

Function Compute extrait le contenu des couches dans le répertoire /opt lors de l'exécution. Lorsque vous associez plusieurs couches à une fonction, leurs contenus fusionnent dans /opt. Si un même fichier existe dans plusieurs couches, celui de la première couche associée est prioritaire.

Par exemple, si vous associez la couche 1 avant la couche 2, tout fichier dupliqué dans la couche 2 sera écrasé par celui de la couche 1.

Exigences de compilation :

  • Si une couche contient des bibliothèques binaires ou des exécutables, compilez-la sous Linux (Debian 9 recommandé).

  • Function Compute s'exécute sur x86_64. Pour les dépendances liées au jeu d'instructions, utilisez une machine x86_64 ou effectuez une compilation croisée afin de garantir la compatibilité.

Répertoires pris en charge par environnement d'exécution

Function Compute ajoute les répertoires suivants au chemin de recherche des dépendances de chaque environnement d'exécution. Structurez votre package ZIP de couche selon ces chemins pour que le code de votre fonction accède au contenu de la couche sans spécifier de chemins explicites.

Environnement d'exécution Chemin du répertoire
Python /opt/python
Node.js /opt/nodejs/node_modules
Java /opt/java/lib
PHP /opt/php
Autres environnements d'exécution (hors custom runtime et custom container runtime) /opt/bin (PATH), /opt/lib (LD_LIBRARY_PATH)
Custom runtime et custom container runtime 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 des dépendances d'une couche dans un custom runtime.

Structure du fichier ZIP de couche

Les exemples suivants illustrent la structure de fichier ZIP requise ainsi que les chemins de déploiement correspondants pour chaque environnement d'exécution.

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 jackson-core :

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 des dépendances Composer :

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

Extracted to:
/opt/php/vendor

Créer un fichier ZIP de couche

Empaquetez les dépendances de votre couche dans un fichier ZIP respectant la structure de répertoires standard de votre environnement d'exécution. Function Compute ajoute alors automatiquement les chemins de recherche des dépendances, permettant à votre code de charger les bibliothèques sans chemins complets.

Remarque

Alignez la version locale de votre langage sur celle de l'environnement d'exécution Function Compute prévu.

Environnement d'exécution Python

  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 <package-name>

    Exemple avec numpy :

    pip install --target ./python numpy

    Après l'installation, la structure du répertoire 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

Environnement d'exécution Node.js

  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 <package-name>

    Exemple avec uuid :

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

    Après l'installation, la structure du répertoire 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

Environnement d'exécution 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 déclarant 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 du répertoire 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

Environnement d'exécution 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 déclarant 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 du répertoire 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 une couche personnalisée

Via la console

Prérequis

Avant de commencer, assurez-vous de disposer :

É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. Une fois la couche créée, la version 1 est générée automatiquement. Chaque nouvelle version est incrémentée séquentiellement.

    Paramètre Description
    Name Saisissez un nom pour la couche.
    Description Saisissez une description pour la couche.
    Compatible Runtime Sélectionnez les environnements d'exécution compatibles avec cette couche.
    Layer Upload Method Choisissez la méthode d'importation des dépendances de la couche : 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 — construisez directement à partir d'un fichier de dépendances (pris en charge pour Python avec requirements.txt et Node.js avec package.json, ainsi que pour les bibliothèques système légères).
    Build Environment Apparaît lorsque Build Dependency Layer Online est sélectionné. Choisissez l'environnement d'exécution pour la construction de la couche. Seuls les environnements Python et Node.js sont actuellement 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 des packages système dans la couche.
  4. Pour ajouter une nouvelle version à une couche existante :

    1. Sur la page Layers, cliquez sur le nom de la couche cible.

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

    3. Sélectionnez un environnement d'exécution, téléchargez le nouveau code de la couche, puis cliquez sur Create.

    Remarque

    Vous ne pouvez pas modifier une couche existante ou l'une de ses versions. Pour mettre à jour une couche, créez une nouvelle version. Si une version de couche référencée a été supprimée, retirez la référence avant toute mise à jour.

Avec Serverless Devs

Prérequis

Avant de commencer, assurez-vous de disposer :

Étapes

  1. Exécutez la commande suivante pour créer une couche :

    Paramètre Description
    --code Chemin vers le package de code de la couche.
    --compatible-runtime Liste des environnements d'exécution compatibles, séparés par des virgules.
    --layer-name Nom de la couche.
    s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,Java11,custom --region cn-hangzhou --layer-name my-layer

    Paramètres : En cas de succès, la commande retourne l'Alibaba Cloud Resource Name (ARN) de la couche. L'ARN contient l'ID du compte, le nom de la couche et le numéro de version séparés par des dièses (#). dg-createlayer-success

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

    Remarque

    Vous ne pouvez pas modifier une couche existante ou l'une de ses versions. Pour mettre à jour une couche, créez une nouvelle version. Si une version de couche référencée a été supprimée, retirez la référence avant toute mise à jour.

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

Supprimer une couche ou une version de couche

Une fois une version de couche supprimée, vous ne pouvez plus la consulter ni la référencer dans de nouvelles configurations de fonctions. Les fonctions référençant déjà la version supprimée continuent de fonctionner normalement.

  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 une couche ou une version de couche :

    • Supprimer une couche : Localisez la couche cible, cliquez sur Delete dans la colonne Actions, cochez la case de confirmation, puis cliquez sur Delete.

    • Supprimer une version de couche : Ouvrez la page de détails de la couche, accédez à la section Version Management, localisez la version cible, cliquez sur Delete dans la colonne Actions, puis cliquez sur Delete dans la boîte de dialogue Confirm.

Étapes suivantes

  • Associez la couche personnalisée à une fonction pour lui permettre d'accéder à ses ressources. Pour plus de détails, consultez Configurer une couche personnalisée.

  • Gérez et configurez les couches par programmation à l'aide du 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 couche incluent des bibliothèques partagées ou si votre environnement local est incompatible avec l'environnement d'exécution Function Compute, construisez plutôt la couche à partir d'un Dockerfile. Pour plus de détails, consultez Construire une couche à l'aide d'un Dockerfile.