Todos os produtos
Search
Central de documentação

Function Compute:Criar uma camada personalizada

Última atualização: Sep 09, 2026

As camadas fornecem bibliotecas de dependências compartilhadas, ambientes de execução e extensões para suas funções. Extraia as bibliotecas comuns das quais suas funções dependem para uma camada ou use camadas públicas do Function Compute para reduzir o tamanho do pacote de código durante a implantação ou atualização de uma função. Este tópico descreve o funcionamento das camadas, os diretórios compatíveis com cada runtime, como criar um arquivo ZIP de camada e como criar e excluir uma camada personalizada.

Como funciona

Ao criar uma camada, empacote todo o conteúdo em um arquivo ZIP. Durante a execução, o Function Compute extrai o conteúdo da camada e o implanta no diretório /opt. Ao configurar várias camadas para uma função, o sistema mescla o conteúdo em /opt na ordem inversa à configuração. Se um arquivo em uma camada tiver o mesmo nome que um arquivo em outra, o arquivo da camada configurada primeiro sobrescreverá o da camada configurada posteriormente.

Por exemplo, se você configurar a Camada 1 e a Camada 2 para uma função, a instância da função carregará primeiro a Camada 2 e depois a Camada 1 ao iniciar, e extrairá ambas para o diretório /opt. Em /opt, o conteúdo da Camada 1 vem primeiro e o da Camada 2 vem em seguida. Caso a Camada 1 e a Camada 2 contenham arquivos com o mesmo nome, os arquivos da Camada 1 substituirão os da Camada 2.

Requisitos de compilação:

  • Se uma camada contiver bibliotecas binárias ou executáveis, compile-a em Linux (recomenda-se Debian 9).

  • O Function Compute opera em x86_64. Para dependências vinculadas ao conjunto de instruções, use uma máquina x86_64 ou faça a compilação cruzada para garantir a compatibilidade.

Diretórios compatíveis por runtime

Caso um runtime seja compatível com camadas, o Function Compute adiciona os seguintes diretórios ao caminho de busca de dependências da linguagem do runtime. Estruture seu pacote ZIP de camada para corresponder a esses caminhos, permitindo que o código da sua função acesse o conteúdo da camada sem especificar caminhos explícitos. Para obter detalhes sobre como criar um arquivo ZIP de camada, consulte Build a layer ZIP file.

Runtime

Caminho do diretório

Python

/opt/python

Node.js

/opt/nodejs/node_modules

Java

/opt/java/lib

PHP

/opt/php

Outros runtimes (excluindo custom runtime e custom container runtime)

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

Custom runtime e custom container runtime

Nenhum

Se preferir usar uma estrutura de diretórios personalizada, adicione explicitamente o caminho de busca de dependências no código da sua função. Para mais informações, consulte How do I reference dependencies in a layer in a custom runtime.

Estrutura do arquivo ZIP da camada

Os exemplos a seguir mostram a estrutura necessária do arquivo ZIP e os caminhos de implantação correspondentes para cada runtime.

Python — empacotamento com a dependência requests:

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

Extracted to:
/opt/python/requests

Node.js — empacotamento com a dependência uuid:

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

Extracted to:
/opt/nodejs/node_modules/uuid

Java — empacotamento com a dependência 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 — empacotamento com dependências do Composer:

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

Extracted to:
/opt/php/vendor

Criar um arquivo ZIP de camada

A criação de um arquivo ZIP de camada é semelhante à criação de um pacote de código. Para que o Function Compute carregue corretamente as bibliotecas publicadas em uma camada durante a execução, a estrutura de diretórios do código da biblioteca deve seguir as convenções padrão de cada linguagem. Para obter detalhes, consulte Supported directories by runtime. Se você empacotar as dependências da camada conforme especificado, o Function Compute adicionará automaticamente o caminho de busca de dependências para cada linguagem, eliminando a necessidade de especificar o caminho completo.

Para criar um arquivo ZIP de camada para cada runtime, execute as etapas a seguir:

Nota
  • Ao compilar uma camada localmente, utilize a mesma versão da linguagem de programação que a versão do runtime selecionada no Function Compute.

  • O diretório de trabalho my-layer-code criado nas etapas seguintes é apenas um exemplo. Substitua o nome do diretório conforme necessário.

Runtime Python

Nota

Ao compilar uma camada localmente, utilize a mesma versão do Python que a versão do runtime Python selecionada no Function Compute.

  1. Crie um diretório de trabalho:

    mkdir my-layer-code
    cd my-layer-code
  2. Instale as dependências no subdiretório python:

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

    Para obter detalhes sobre o comando pip install, consulte pip install.

    Exemplo com numpy:

    pip install --target ./python numpy

    Após a instalação, a estrutura de diretórios ficará assim:

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs
  3. Empacote as dependências a partir do diretório my-layer-code:

    zip -r my-layer-code.zip python

Runtime Node.js

Nota

Ao compilar uma camada localmente, utilize a mesma versão do Node.js que a versão do runtime Node.js selecionada no Function Compute.

  1. Crie um diretório de trabalho:

    mkdir my-layer-code
    cd my-layer-code
  2. Instale as dependências no subdiretório nodejs:

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

    ${PackageName} é o nome do pacote de dependência que você deseja instalar. Para obter detalhes sobre o comando npm install, consulte npm-install.

    Exemplo com uuid:

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

    Após a instalação, a estrutura de diretórios ficará assim:

    my-layer-code
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └── package.json
  3. Empacote as dependências a partir do diretório my-layer-code:

    zip -r my-layer-code.zip nodejs

Runtime Java

  1. Crie um diretório de trabalho:

    mkdir my-layer-code/java
    cd my-layer-code/java
  2. Crie um arquivo pom.xml que declare suas dependências. O exemplo a seguir instala o commons-lang3 e o copia para ./lib usando o 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 as dependências:

    mvn dependency:copy-dependencies

    Após a instalação, a estrutura de diretórios ficará assim:

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. Empacote as dependências a partir do diretório my-layer-code:

    zip -r my-layer-code.zip java

Runtime PHP

  1. Crie um diretório de trabalho:

    mkdir -p my-layer-code/php
    cd my-layer-code/php
  2. Crie um arquivo composer.json que declare suas dependências. Exemplo:

    {
      "require": {
        "aliyunfc/fc-php-sdk": "~1.2",
        "alibabacloud/fnf": "^1.7"
      }
    }
  3. Instale as dependências:

    composer install

    Após a instalação, a estrutura de diretórios ficará assim:

    my-layer-code
    └── php
        ├── composer.json
        ├── composer.lock
        └── vendor
  4. Empacote as dependências a partir do diretório my-layer-code:

    zip -r my-layer-code.zip php

Criar uma camada personalizada

Usando o console

Pré-requisitos

Antes de começar, certifique-se de que:

  • Você criou uma função do Function Compute. Para obter detalhes, consulte Create a function.

Etapas

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Advanced Features > Layers.

  2. Na barra de navegação superior, selecione uma região. Na página Layers, clique em Create Layer.

  3. Configure os parâmetros a seguir e clique em Create.

    Parâmetro

    Descrição

    Name

    Insira um nome para a camada.

    Description

    Insira uma descrição para a camada a fim de ajudar a distinguir entre as camadas.

    Compatible Runtime

    Selecione os runtimes compatíveis com esta camada.

    Layer Upload Method

    Escolha como enviar as dependências da camada: Upload Layer in ZIP Package — envie um arquivo .zip (máximo de 500 MB); Upload Layer in Folder — selecione uma pasta que o Function Compute compactará em um arquivo .zip (máximo de 500 MB); Upload Layer Using OSS — especifique o Bucket Name e o Object Name do arquivo .zip no Object Storage Service (OSS) (máximo de 500 MB); Build Dependency Layer Online — se sua função for desenvolvida em Python ou Node.js, ou se você precisar instalar bibliotecas de sistema leves, poderá compilar a camada online. Insira o conteúdo do arquivo de dependência (requirements.txt para Python ou package.json para Node.js) na caixa de entrada abaixo. Após enviar a solicitação, o Function Compute instala automaticamente os pacotes de dependência de nível de linguagem e as bibliotecas de sistema, simplificando o gerenciamento de dependências da camada.

    Build Environment

    Aparece quando Build Dependency Layer Online está selecionado. Escolha o runtime para compilar a camada. Atualmente, há suporte apenas para os runtimes Python e Node.js.

    apt command

    Aparece quando Build Dependency Layer Online está selecionado. Insira nomes de pacotes após apt install para instalar pacotes de sistema na camada.

    Depois que a camada é criada, uma versão da camada é gerada automaticamente. O número da versão começa em 1 e incrementa a cada nova versão.

    Nota

    Se o bucket do OSS for criptografado pelo Key Management Service (KMS), a função vinculada ao serviço Function Compute (AliyunServiceRoleForFC) pode não ter permissão para acessar os objetos criptografados, resultando em um erro AccessDenied. Para resolver isso, atualize a política de chave no console do KMS para conceder acesso à função AliyunServiceRoleForFC. Para obter detalhes, consulte Modify a key policy. Após atualizar a política de chave, tente novamente o upload da camada para verificar se a alteração de permissão entrou em vigor.

  4. Para adicionar uma nova versão a uma camada existente:

    Nota

    Não é possível modificar uma camada existente ou qualquer uma de suas versões. Para atualizar uma camada, crie uma nova camada ou uma nova versão de camada. Se uma versão de camada referenciada for excluída, remova a referência antes de atualizar a configuração da camada.

    1. Na página Layers, clique no nome da camada de destino.

    2. Na seção Version Management, clique em Create Version.

    3. Selecione um runtime, envie o novo código da camada e clique em Create.

Usando Serverless Devs

Pré-requisitos

Antes de começar, certifique-se de que:

Etapas

  1. Execute o seguinte comando para criar uma camada:

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

    A tabela a seguir descreve os parâmetros do comando.

    Parâmetro

    Descrição

    --code

    Caminho para o pacote de código da camada.

    --compatible-runtime

    Lista separada por vírgulas dos runtimes compatíveis.

    --layer-name

    Nome da camada.

    Após a criação da camada, o comando retorna o Alibaba Cloud Resource Name (ARN) da camada. O ARN consiste em três partes separadas por sinais de cerquilha (#): o identificador do ID da conta, o nome da camada e a versão da camada. Você também pode fazer login no console do Function Compute para visualizar as informações sobre a camada criada.

  2. Para adicionar uma nova versão a uma camada existente, execute o mesmo comando com o mesmo nome de camada:

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

    Não é possível modificar uma camada existente ou qualquer uma de suas versões. Para atualizar uma camada, crie uma nova camada ou uma nova versão de camada. Se uma versão de camada referenciada for excluída, remova a referência antes de atualizar a configuração da camada.

Excluir uma camada ou versão de camada

É possível excluir camadas ou versões de camada que não são mais necessárias. Uma camada excluída não pode mais ser visualizada ou referenciada nas configurações de função. No entanto, a execução de funções que já referenciam a camada excluída não é afetada.

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Advanced Features > Layers.

  2. Na barra de navegação superior, selecione uma região.

  3. Na página Layers, exclua uma camada ou uma versão de camada:

    • Excluir uma camada: Localize a camada de destino, clique em Delete na coluna Actions, marque a caixa de confirmação e clique em Delete.

    • Excluir uma versão de camada: Clique no nome da camada de destino. Na seção Version Management da página de detalhes da camada, localize a versão de destino, clique em Delete na coluna Actions e clique em Delete na caixa de diálogo Confirm.

Próximos passos

  • Após criar uma camada personalizada, vincule-a a uma função através do console do Function Compute ou do Serverless Devs para que a função possa acessar os recursos fornecidos pela camada. Para obter detalhes, consulte Configure a custom layer.

  • Também é possível gerenciar e configurar camadas definindo o parâmetro layers ao criar ou atualizar uma função chamando a API ou usando o SDK. Para obter detalhes, consulte CreateFunction e UpdateFunction.

  • Caso as dependências da sua camada incluam bibliotecas compartilhadas ou seu ambiente local seja incompatível com o runtime do Function Compute, não será possível compilar a camada no console ou localmente. Em vez disso, compile a camada a partir de um Dockerfile. Para obter detalhes, consulte Use a Dockerfile to build a layer.