Todos los productos
Search
Centro de documentos

Function Compute:Create a custom layer

Última actualización: Sep 10, 2026

Las capas proporcionan bibliotecas de dependencias compartidas, entornos de ejecución y extensiones de función para sus funciones. Extraiga las bibliotecas comunes de las que dependen sus funciones en una capa o utilice las capas públicas de Function Compute para reducir el tamaño del paquete de código cuando despliegue o actualice una función. Este tema describe cómo funcionan las capas, los directorios compatibles con cada entorno de ejecución, cómo compilar un archivo ZIP de capa y cómo crear y eliminar una capa personalizada.

Funcionamiento

Cuando compile una capa, empaquete todo su contenido en un archivo ZIP. Durante la ejecución, Function Compute extrae el contenido de la capa y lo despliega en el directorio /opt. Si configura varias capas para una función, el contenido se fusiona en /opt en el orden inverso al de su configuración. Si un archivo de una capa tiene el mismo nombre que un archivo de otra capa, el archivo de la capa configurada primero sobrescribe al de la capa configurada después.

Por ejemplo, si configura Layer 1 y Layer 2 para una función, la instancia de la función carga primero Layer 2 y luego Layer 1 al iniciarse. Después, extrae ambas capas en el directorio /opt. En /opt, el contenido de Layer 1 aparece primero y el de Layer 2 después. Si Layer 1 y Layer 2 contienen archivos con el mismo nombre, los archivos de Layer 1 sobrescriben a los de Layer 2.

Requisitos de compilación:

  • Si una capa contiene bibliotecas binarias o archivos ejecutables, compílela en Linux (se recomienda Debian 9).

  • Function Compute se ejecuta en x86_64. Para las dependencias que dependen del conjunto de instrucciones, use una máquina x86_64 o realice una compilación cruzada para garantizar la compatibilidad.

Directorios compatibles por entorno de ejecución

Si un entorno de ejecución es compatible con capas, Function Compute agrega los siguientes directorios a la ruta de búsqueda de dependencias del lenguaje de dicho entorno. Estructure su paquete ZIP de capa para que coincida con estas rutas. Así, el código de su función podrá acceder al contenido de la capa sin especificar rutas explícitas. Para obtener más información sobre cómo compilar un archivo ZIP de capa, consulte Build a layer ZIP file.

Entorno de ejecución

Ruta del directorio

Python

/opt/python

Node.js

/opt/nodejs/node_modules

Java

/opt/java/lib

PHP

/opt/php

Otros entornos de ejecución (excepto custom runtime y custom container runtime)

/opt/bin (PATH), /opt/lib (LD_LIBRARY_PATH)

Custom runtime y custom container runtime

Ninguna

Si utiliza una estructura de directorios personalizada, agregue explícitamente la ruta de búsqueda de dependencias en el código de su función. Para obtener más información, consulte How do I reference dependencies in a layer in a custom runtime.

Estructura del archivo ZIP de la capa

A continuación se muestran ejemplos de la estructura obligatoria del archivo ZIP y las rutas de despliegue correspondientes para cada entorno de ejecución.

Python: empaquetado con la dependencia requests:

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

Extracted to:
/opt/python/requests

Node.js: empaquetado con la dependencia uuid:

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

Extracted to:
/opt/nodejs/node_modules/uuid

Java: empaquetado con la dependencia 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: empaquetado con dependencias de Composer:

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

Extracted to:
/opt/php/vendor

Compilar un archivo ZIP de capa

Compilar un archivo ZIP de capa es similar a compilar un paquete de código. Para que Function Compute cargue correctamente las bibliotecas publicadas en una capa durante la ejecución, la estructura de directorios del código de la biblioteca debe seguir las convenciones estándar de cada lenguaje. Para obtener más información, consulte Supported directories by runtime. Si empaqueta las dependencias de su capa según las indicaciones, Function Compute agrega automáticamente la ruta de búsqueda de dependencias para cada lenguaje y no necesita especificar la ruta completa.

Siga estos pasos para compilar un archivo ZIP de capa para cada entorno de ejecución:

Nota
  • Cuando compile una capa de forma local, use la misma versión del lenguaje de programación que la versión del entorno de ejecución seleccionada en Function Compute.

  • El directorio de trabajo my-layer-code creado en los siguientes pasos es solo un ejemplo. Modifique el nombre del directorio según sus necesidades.

Entorno de ejecución de Python

Nota

Cuando compile una capa de forma local, use la misma versión de Python que la versión del entorno de ejecución de Python seleccionada en Function Compute.

  1. Cree un directorio de trabajo:

    mkdir my-layer-code
    cd my-layer-code
  2. Instale las dependencias en el subdirectorio python:

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

    Para obtener más información sobre el comando pip install, consulte pip install.

    Ejemplo con numpy:

    pip install --target ./python numpy

    Después de la instalación, la estructura de directorios es la siguiente:

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs
  3. Empaquete las dependencias desde el directorio my-layer-code:

    zip -r my-layer-code.zip python

Entorno de ejecución de Node.js

Nota

Cuando compile una capa de forma local, use la misma versión de Node.js que la versión del entorno de ejecución de Node.js seleccionada en Function Compute.

  1. Cree un directorio de trabajo:

    mkdir my-layer-code
    cd my-layer-code
  2. Instale las dependencias en el subdirectorio nodejs:

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

    ${PackageName} es el nombre del paquete de dependencia que desea instalar. Para obtener más información sobre el comando npm install, consulte npm-install.

    Ejemplo con uuid:

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

    Después de la instalación, la estructura de directorios es la siguiente:

    my-layer-code
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └── package.json
  3. Empaquete las dependencias desde el directorio my-layer-code:

    zip -r my-layer-code.zip nodejs

Entorno de ejecución de Java

  1. Cree un directorio de trabajo:

    mkdir my-layer-code/java
    cd my-layer-code/java
  2. Cree un archivo pom.xml que declare sus dependencias. El siguiente ejemplo instala commons-lang3 y lo copia en ./lib mediante 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. Instale las dependencias:

    mvn dependency:copy-dependencies

    Después de la instalación, la estructura de directorios es la siguiente:

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. Empaquete las dependencias desde el directorio my-layer-code:

    zip -r my-layer-code.zip java

Entorno de ejecución de PHP

  1. Cree un directorio de trabajo:

    mkdir -p my-layer-code/php
    cd my-layer-code/php
  2. Cree un archivo composer.json que declare sus dependencias. Ejemplo:

    {
      "require": {
        "aliyunfc/fc-php-sdk": "~1.2",
        "alibabacloud/fnf": "^1.7"
      }
    }
  3. Instale las dependencias:

    composer install

    Después de la instalación, la estructura de directorios es la siguiente:

    my-layer-code
    └── php
        ├── composer.json
        ├── composer.lock
        └── vendor
  4. Empaquete las dependencias desde el directorio my-layer-code:

    zip -r my-layer-code.zip php

Crear una capa personalizada

Uso de la consola

Requisitos previos

Antes de empezar, asegúrese de cumplir con lo siguiente:

  • Se creó una función de Function Compute. Para obtener más información, consulte Create a function.

Pasos

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Advanced Features > Layers.

  2. En la barra de navegación superior, seleccione una región. En la página Layers, haga clic en Create Layer.

  3. Configure los siguientes parámetros y haga clic en Create.

    Parámetro

    Descripción

    Name

    Introduzca un nombre para la capa.

    Description

    Introduzca una descripción para la capa que le ayude a distinguirla de otras capas.

    Compatible Runtime

    Seleccione los entornos de ejecución compatibles con esta capa.

    Layer Upload Method

    Seleccione cómo cargar las dependencias de la capa: Upload Layer in ZIP Package para cargar un archivo .zip (máximo 500 MB); Upload Layer in Folder para seleccionar una carpeta que Function Compute comprimirá en un archivo .zip (máximo 500 MB); Upload Layer Using OSS para especificar el Bucket Name y el Object Name del archivo .zip en Object Storage Service (OSS) (máximo 500 MB); Build Dependency Layer Online si su función está desarrollada en Python o Node.js, o si necesita instalar bibliotecas de sistema ligeras, puede compilar la capa en línea. Introduzca el contenido del archivo de dependencias (requirements.txt para Python o package.json para Node.js) en el cuadro de entrada inferior. Después de enviar la solicitud, Function Compute instala automáticamente los paquetes de dependencia del lenguaje y las bibliotecas de sistema, lo que simplifica la gestión de dependencias de la capa.

    Build Environment

    Aparece cuando se selecciona Build Dependency Layer Online. Elija el entorno de ejecución para compilar la capa. Actualmente, solo son compatibles los entornos de ejecución de Python y Node.js.

    apt command

    Aparece cuando se selecciona Build Dependency Layer Online. Introduzca los nombres de los paquetes después de apt install para instalar paquetes de sistema en la capa.

    Una vez creada la capa, se genera automáticamente una versión de capa. El número de versión comienza en 1 y aumenta con cada nueva versión.

    Nota

    Si el bucket de OSS está cifrado mediante Key Management Service (KMS), es posible que el rol vinculado al servicio de Function Compute (AliyunServiceRoleForFC) no tenga permiso para acceder a los objetos cifrados. Esto genera un error AccessDenied. Para resolverlo, actualice la directiva de clave en la consola de KMS para otorgar acceso al rol AliyunServiceRoleForFC. Para obtener más información, consulte Modify a key policy. Después de actualizar la directiva de clave, vuelva a intentar la carga de la capa para comprobar que el cambio de permiso surta efecto.

  4. Para agregar una nueva versión a una capa existente:

    Nota

    No es posible modificar una capa existente ni ninguna de sus versiones. Para actualizar una capa, cree una capa nueva o una nueva versión de capa. Si se elimina una versión de capa referenciada, elimine la referencia antes de actualizar la configuración de la capa.

    1. En la página Layers, haga clic en el nombre de la capa de destino.

    2. En la sección Version Management, haga clic en Create Version.

    3. Seleccione un entorno de ejecución, cargue el nuevo código de la capa y haga clic en Create.

Uso de Serverless Devs

Requisitos previos

Antes de empezar, asegúrese de cumplir con lo siguiente:

Pasos

  1. Ejecute el siguiente comando para crear una capa:

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

    La siguiente tabla describe los parámetros del comando.

    Parámetro

    Descripción

    --code

    Ruta al paquete de código de la capa.

    --compatible-runtime

    Lista separada por comas de los entornos de ejecución compatibles.

    --layer-name

    Nombre de la capa.

    Una vez creada la capa, el comando devuelve el Alibaba Cloud Resource Name (ARN) de la capa. El ARN consta de tres partes separadas por signos de número (#): el identificador del ID de cuenta, el nombre de la capa y la versión de la capa. También puede iniciar sesión en la consola de Function Compute para consultar la información de la capa creada.

  2. Para agregar una nueva versión a una capa existente, ejecute el mismo comando con el mismo nombre de capa:

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

    No es posible modificar una capa existente ni ninguna de sus versiones. Para actualizar una capa, cree una capa nueva o una nueva versión de capa. Si se elimina una versión de capa referenciada, elimine la referencia antes de actualizar la configuración de la capa.

Eliminar una capa o una versión de capa

Elimine las capas o versiones de capa que ya no necesite. Una capa eliminada ya no se puede consultar ni referenciar en las configuraciones de funciones. Sin embargo, esto no afecta la ejecución de las funciones que ya hacen referencia a la capa eliminada.

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Advanced Features > Layers.

  2. En la barra de navegación superior, seleccione una región.

  3. En la página Layers, elimine una capa o una versión de capa:

    • Eliminar una capa: busque la capa de destino, haga clic en Delete en la columna Actions, active la casilla de confirmación y haga clic en Delete.

    • Eliminar una versión de capa: haga clic en el nombre de la capa de destino. En la sección Version Management de la página de detalles de la capa, busque la versión de destino, haga clic en Delete en la columna Actions y haga clic en Delete en el cuadro de diálogo Confirm.

Pasos siguientes

  • Después de crear una capa personalizada, vincúlela a una función mediante la consola de Function Compute o Serverless Devs para que la función pueda acceder a los recursos proporcionados por la capa. Para obtener más información, consulte Configure a custom layer.

  • También puede gestionar y configurar capas si establece el parámetro layers cuando cree o actualice una función mediante la API o el SDK. Para obtener más información, consulte CreateFunction y UpdateFunction.

  • Si las dependencias de su capa incluyen bibliotecas compartidas o su entorno local no es compatible con el entorno de ejecución de Function Compute, no podrá compilar la capa en la consola ni de forma local. En su lugar, compile la capa a partir de un Dockerfile. Para obtener más información, consulte Use a Dockerfile to build a layer.