全部产品
Search
文档中心

Function Compute:Buat lapisan kustom

更新时间:Jul 06, 2025

Lapisan memungkinkan Anda mempublikasikan dan menerapkan sumber daya seperti dependensi umum, runtime, dan ekstensi fungsi. Anda dapat mengabstraksi pustaka publik yang digunakan oleh fungsi ke dalam lapisan atau menggunakan lapisan publik Function Compute untuk mengurangi ukuran paket kode saat menerapkan atau memperbarui fungsi. Topik ini menjelaskan cara kerja lapisan dalam berbagai runtime, cara membuat file ZIP lapisan, serta cara membuat dan menghapus lapisan kustom.

Cara kerjanya

  • Saat membuat lapisan, Anda perlu mengemas konten lapisan ke dalam file ZIP. Function Compute runtime mendekompresi file ZIP dan menerapkan konten lapisan ke direktori /opt.

  • Jika beberapa lapisan dikonfigurasikan untuk suatu fungsi, konten dari lapisan tersebut digabungkan dan disimpan di direktori /opt dalam urutan terbalik. Jika dua lapisan memiliki file dengan nama yang sama, file di lapisan yang dikonfigurasikan pertama akan menimpa file di lapisan yang dikonfigurasikan kemudian.

    Sebagai contoh, jika Anda mengonfigurasikan Lapisan 1 dan Lapisan 2 untuk suatu fungsi, Lapisan 2 dimuat sebelum Lapisan 1 saat instance fungsi dimulai. Konten lapisan didekompresi ke direktori /opt. Di direktori /opt, konten Lapisan 1 ditempatkan sebelum konten Lapisan 2. Jika ada file dengan nama yang sama di kedua lapisan, file di Lapisan 1 akan menimpa file di Lapisan 2.

  • Jika kode di lapisan bergantung pada pustaka biner atau file yang dapat dieksekusi, Anda harus menggunakan sistem Linux untuk mengkompilasi dan membangun lapisan. Debian 9 direkomendasikan.

  • Runtime Function Compute didasarkan pada arsitektur x86_64. Jika pustaka dependensi di lapisan memiliki persyaratan set instruksi tertentu, Anda perlu menggunakan mesin x86_64 atau melakukan kompilasi silang untuk memastikan bahwa pustaka dependensi kompatibel dengan runtime Function Compute.

Catatan penggunaan untuk lapisan dalam runtime yang berbeda

Jika runtime mendukung lapisan, Function Compute menambahkan direktori tertentu ke jalur pencarian paket dependensi. Tabel berikut menunjukkan direktori untuk setiap bahasa pemrograman. Kami merekomendasikan Anda mendefinisikan struktur folder yang sama dalam file ZIP lapisan seperti direktori yang tercantum dalam tabel, sehingga kode fungsi Anda dapat mengakses lapisan tanpa menentukan jalur. Untuk informasi lebih lanjut tentang cara membangun file ZIP lapisan, lihat Bangun File ZIP Lapisan. Jika Anda ingin menentukan struktur direktori kustom untuk lapisan, Anda harus secara eksplisit menambahkan jalur pencarian pustaka dependensi ke kode Anda. Untuk informasi lebih lanjut, lihat Bagaimana Cara Saya Merujuk Dependensi dalam Lapisan di Runtime Kustom?

Directories that can be added in each runtime

Runtime

Direktori

Python

/opt/python

Node.js

/opt/nodejs/node_modules

Java

/opt/java/lib

PHP

/opt/php

Runtime selain runtime kustom dan runtime Custom Container

/opt/bin (PATH)

/opt/lib (LD_LIBRARY_PATH)

Runtime kustom dan runtime Custom Container

Tidak ada

File structure of the .ZIP file in each runtime

Bagian ini menjelaskan struktur file dari file ZIP yang diunggah di setiap runtime dan jalur setelah dekompresi dan penyebaran.

Struktur file setelah dependensi requests digunakan untuk pengemasan
my-layer-code.zip
└── python
    └── requests

Jalur setelah file .ZIP didekompresi dan disebar
/
└── opt
    └── python
        └ ── requests 
Struktur file setelah dependensi uuid digunakan untuk pengemasan
my-layer-code.zip
└── nodejs
    ├── node_modules
    │   └── uuid
    ├── package-lock.json
    └── package.json

Jalur setelah file .ZIP didekompresi dan disebar
/
└── opt
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └ ── package.json 
Struktur file setelah dependensi jackson-core digunakan untuk pengemasan
my-layer-code.zip
└── java
    └── lib
        └── commons-lang3-3.12.0.jar

Jalur setelah file .ZIP didekompresi dan disebar
/
└── opt
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
 Struktur file setelah dependensi composer digunakan untuk pengemasan
my-layer-code.zip
└── php
    ├──composer.json
    ├──composer.lock
    └──vendor

Jalur setelah file .ZIP didekompresi dan disebar
/
└── opt
    └── php
        ├──composer.json
        ├──composer.lock
        └──vendor

Bangun file .ZIP untuk lapisan

Saat membuat lapisan, Anda perlu mengemas konten lapisan ke dalam file ZIP. Function Compute runtime mendekompresi file ZIP dan menerapkan konten lapisan ke direktori /opt.

Metode untuk membangun file ZIP lapisan serupa dengan cara membangun paket kode. Untuk memastikan bahwa fungsi dapat memuat dan menggunakan pustaka yang diterbitkan oleh lapisan, struktur direktori kode pustaka harus sesuai dengan persyaratan direktori setiap bahasa. Untuk informasi lebih lanjut, lihat Catatan Penggunaan untuk Lapisan dalam Runtime yang Berbeda. Untuk pustaka dependensi fungsi dalam lapisan, runtime Function Compute secara otomatis menambahkan jalur pencarian pustaka fungsi untuk berbagai bahasa pemrograman sehingga Anda tidak perlu menentukan jalur lengkap jika Anda mengemas pustaka sesuai dengan aturan pengemasan standar. Jika Anda ingin menentukan struktur direktori kustom untuk lapisan, Anda harus secara eksplisit menambahkan jalur pencarian pustaka dependensi ke kode Anda. Untuk informasi lebih lanjut, lihat Bagaimana Cara Saya Merujuk Dependensi dalam Lapisan di Runtime Kustom?

Berikut ini adalah prosedur untuk membangun file ZIP lapisan di runtime yang berbeda.

Catatan
  • Saat membangun lapisan pada mesin lokal, bahasa pemrograman yang Anda gunakan harus sama dengan runtime yang diinginkan di Function Compute.

  • Pada bagian berikutnya, direktori kerja my-layer-code digunakan sebagai contoh. Dalam skenario bisnis aktual Anda, ganti direktori dengan direktori aktual.

Runtime Python

Catatan

Jika Anda membangun lapisan pada mesin lokal, versi Python yang Anda gunakan harus sama dengan versi runtime Python yang Anda gunakan di Function Compute.

  1. Jalankan perintah berikut untuk membuat direktori kerja:

    mkdir my-layer-code
  2. Pergi ke direktori kerja.

    cd my-layer-code
  3. Jalankan perintah berikut untuk menginstal pustaka dependensi di my-layer-code/python:

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

    ${PackageName} menunjukkan nama pustaka dependensi yang ingin Anda instal. Untuk informasi lebih lanjut tentang perintah pip install, lihat pip install.

    Kode Contoh:

    pip install --target ./python numpy

    Setelah pustaka dependensi diinstal, periksa apakah direktori Anda sesuai dengan struktur berikut:

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs 
  4. Jalankan perintah berikut di direktori my-layer-code untuk mengemas dependensi:

    zip -r my-layer-code.zip python

Runtime Node.js

Catatan

Jika Anda membangun lapisan pada mesin lokal, versi Node.js yang Anda gunakan harus sama dengan versi runtime Node.js yang Anda gunakan di Function Compute.

  1. Jalankan perintah berikut untuk membuat direktori kerja:

    mkdir my-layer-code
  2. Pergi ke direktori kerja.

    cd my-layer-code
  3. Jalankan perintah berikut untuk menginstal pustaka dependensi di my-layer-code/nodejs:

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

    Ganti ${PackageName} dengan nama pustaka dependensi yang ingin Anda instal. Untuk informasi lebih lanjut tentang perintah npm install, lihat npm-install.

    Kode Contoh:

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

    Setelah pustaka dependensi diinstal, periksa apakah direktori Anda sesuai dengan struktur berikut:

    my-layer-code
    └── nodejs
        ├── node_modules
        │ └── uuid
        ├── package-lock.json
        └── package.json
  4. Jalankan perintah berikut di my-layer-code untuk mengemas dependensi:

    zip -r my-layer-code.zip nodejs

Runtime Java

  1. Jalankan perintah berikut untuk membuat direktori kerja:

    mkdir my-layer-code/java
  2. Pergi ke direktori kerja.

    cd my-layer-code/java
  3. Instal dependensi menggunakan Maven.

    1. Buat file pom.xml di direktori my-layer-code/java.

      Kode Contoh:

      <?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>
          <!-- Dependensi Maven yang ingin Anda unduh -->
          <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 unduhan terkait Maven -->
                  <plugin>
                      <artifactId>maven-dependency-plugin</artifactId>
                      <configuration>
                          <!-- Tentukan apakah akan mengecualikan dependensi tidak langsung. Nilai default: false. -->
                          <excludeTransitive>false</excludeTransitive>
                          <!-- Tentukan apakah akan menghapus informasi versi di akhir nama file JAR dependensi. Nilai default: false. -->
                          <stripVersion>false</stripVersion>
                          <!-- Jalur keluaran file-->
                          <outputDirectory>./lib</outputDirectory>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      </project>

      Deskripsi

      • File dependensi yang ingin Anda instal adalah org.apache.commons.lang3.

      • Gunakan maven-dependency-plugin untuk menyalin file dependensi ke direktori /java/lib.

    2. Jalankan perintah berikut di direktori my-layer-code/java untuk menginstal dependensi:

      mvn dependency:copy-dependencies

    Setelah pustaka dependensi diinstal, periksa apakah direktori Anda sesuai dengan struktur berikut:

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. Jalankan perintah berikut di direktori my-layer-code untuk mengemas dependensi:

    zip -r my-layer-code.zip java

Runtime PHP

  1. Jalankan perintah berikut untuk membuat direktori kerja:

    mkdir -p my-layer-code/php
  2. Pergi ke direktori kerja.

    cd my-layer-code/php
  3. Gunakan Composer untuk menginstal dependensi.

    1. Di direktori my-layer-code/php, buat file composer.json.

      Kode Contoh:

      {
        "require": {
          "aliyunfc/fc-php-sdk": "~1.2",
          "alibabacloud/fnf": "^1.7"
        }
      }
    2. Jalankan perintah berikut untuk menginstal dependensi:

      composer install

    Setelah pustaka dependensi diinstal, periksa apakah direktori Anda sesuai dengan struktur berikut:

    my-layer-code
     └─php
       ├──composer.json
       ├──composer.lock
       └──vendor
  4. Jalankan perintah berikut di direktori my-layer-code untuk mengemas dependensi:

    zip -r my-layer-code.zip php

Buat lapisan kustom

Buat lapisan kustom di konsol Function Compute

Prasyarat

Fungsi telah dibuat. Untuk informasi lebih lanjut, lihat Buat Fungsi.

Prosedur

  1. Masuk ke konsol Function Compute. Di panel navigasi kiri, pilih Advanced Features > Layers.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Layers, klik Create Layer.

  3. Di halaman Create Layer, konfigurasikan parameter dan klik Create. Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    Name

    Masukkan nama untuk lapisan yang ingin Anda buat.

    Description

    Masukkan deskripsi yang membedakan lapisan dari yang lain.

    Compatible Runtime

    Tentukan runtime yang kompatibel.

    Layer Upload Method

    Pilih metode untuk mengunggah dependensi lapisan. Anda dapat menggunakan salah satu metode berikut untuk mengunggah dependensi lapisan:

    • Upload Layer in ZIP Package

      Pilih dan unggah file ZIP lapisan. File ZIP yang diunggah tidak boleh melebihi 500 MB.

    • Upload Layer in Folder

      Pilih dan unggah folder yang berisi file ZIP lapisan. Ukuran folder tidak boleh melebihi 500 MB setelah dikompresi.

    • Upload Layer Using OSS

      Tentukan Bucket Name dan Object Name untuk mengunggah file ZIP lapisan dari Object Storage Service (OSS). Ukuran objek yang dipilih di OSS tidak boleh melebihi 500 MB.

    • Build Dependency Layer Online

      Jika aplikasi Anda dikembangkan berdasarkan Python atau Node.js, atau Anda perlu menginstal beberapa pustaka sistem ringan, Anda dapat memilih Bangun Lapisan Dependensi Secara Online dan masukkan isi file dependensi package.json atau requirements.txt di editor di bawah ini. Setelah pengaturan disubmit, sistem secara otomatis menginstal paket dependensi tingkat bahasa dan pustaka sistem ini untuk menyederhanakan manajemen dependensi lapisan.

    Build Environment

    Jika Anda memilih Build Dependency Layer Online, Anda harus menentukan runtime tempat Anda ingin membangun lapisan dependensi.

    Catatan

    Hanya runtime Python dan Node.js yang mendukung pembangunan lapisan dependensi secara online.

    apt Command

    Jika Anda memilih Build Dependency Layer Online dan perlu menginstal beberapa paket perangkat lunak ke lapisan, Anda dapat langsung memasukkan nama dependensi di kotak input apt install.

    Setelah lapisan dibuat, sistem menghasilkan versi lapisan yang dimulai dari 1 dalam urutan menaik.

  4. Buat versi baru.

    Catatan

    Anda tidak dapat memodifikasi lapisan yang telah dibuat atau versi dari lapisan yang telah dibuat. Jika Anda ingin memperbarui konfigurasi lapisan, Anda dapat membuat lapisan baru atau versi baru. Jika versi lapisan yang dirujuk dihapus, referensi tersebut harus dihapus sebelum Anda memperbarui konfigurasi lapisan.

    1. Di halaman Layers, temukan lapisan yang diinginkan dan klik nama lapisan tersebut.

    2. Di bagian Versions pada halaman yang muncul, klik Create Version.

    3. Di halaman pembuatan versi lapisan, tentukan runtime, unggah kode lapisan baru, lalu klik Create.

Buat lapisan kustom menggunakan Serverless Devs

Prerequisites

Procedure

  1. Jalankan perintah berikut untuk membuat lapisan:

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

    Deskripsi:

    • --code: menentukan jalur paket kode.

    • --compatible-runtime: menentukan runtime yang kompatibel dengan lapisan.

    • --layer-name: menentukan nama lapisan.

    Setelah lapisan dibuat, pesan sukses ditampilkan dan Alibaba Cloud Resource Name (ARN) lapisan dikembalikan. ARN terdiri dari tiga bagian, yang dipisahkan oleh #. Bagian pertama adalah pengenal ID akun, bagian kedua adalah nama lapisan, dan bagian ketiga adalah versi lapisan. Gambar berikut menunjukkan contohnya. Anda dapat masuk ke konsol Function Compute untuk melihat informasi tentang lapisan yang telah dibuat.dg-createlayer-success

  2. Ulangi perintah berikut untuk membuat versi baru untuk lapisan yang telah dibuat:

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

    Anda tidak dapat memodifikasi lapisan yang telah dibuat atau versi dari lapisan yang telah dibuat. Jika Anda ingin memperbarui konfigurasi lapisan, Anda dapat membuat lapisan baru atau versi baru. Jika versi lapisan yang dirujuk dihapus, referensi tersebut harus dihapus sebelum Anda memperbarui konfigurasi lapisan.

Hapus lapisan atau versinya

Anda dapat menghapus lapisan atau versinya yang tidak lagi diperlukan. Lapisan yang dihapus tidak dapat dilihat atau dirujuk lagi oleh konfigurasi fungsi. Namun, eksekusi fungsi yang dikonfigurasikan untuk merujuk lapisan tersebut tidak terpengaruh.

  1. Masuk ke konsol Function Compute. Di panel navigasi kiri, pilih Advanced Features > Layers.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di halaman Lapisan, hapus lapisan atau versinya sesuai kebutuhan bisnis Anda.

    • Hapus Lapisan

      Temukan lapisan yang ingin Anda hapus dan klik Delete di kolom Actions. Di kotak dialog yang muncul, pilih Saya ingin menghapus semua N versi di lapisan tersebut, lalu klik Delete.

    • Hapus Versi Lapisan

      Klik nama lapisan yang versinya ingin Anda hapus. Di bagian Versions pada halaman detail lapisan, temukan versi lapisan yang ingin Anda hapus dan klik Delete di kolom Actions. Di pesan Confirm yang muncul, klik Delete.

Informasi lebih lanjut

  • Anda juga dapat menggunakan parameter layers untuk mengelola dan mengonfigurasi lapisan saat Anda membuat fungsi atau memperbarui fungsi menggunakan operasi API atau SDK. Untuk informasi lebih lanjut, lihat CreateFunction dan UpdateFunction.

  • Jika dependensi lapisan yang akan diinstal berisi pustaka tautan dinamis, atau lingkungan lokal Anda tidak kompatibel dengan runtime Function Compute, Anda tidak dapat membangun lapisan di konsol Function Compute atau di mesin lokal. Anda hanya dapat membangun lapisan berdasarkan Dockerfile. Untuk informasi lebih lanjut, lihat Gunakan Dockerfile untuk Membangun Lapisan.

  • Setelah lapisan kustom dibuat, Anda dapat mengaitkannya ke fungsi di konsol Function Compute atau menggunakan Serverless Devs sehingga fungsi dapat mengakses sumber daya yang disediakan dalam lapisan. Untuk informasi lebih lanjut, lihat Konfigurasikan Lapisan Kustom.