Tüm Ürünler
Search
Belge Merkezi

Function Compute:Create a custom layer

Son Güncelleme:Oct 08, 2026

Katmanlar, işlevleriniz için ortak bağımlılık kütüphaneleri, çalışma zamanı ortamları ve işlev uzantıları sağlar. Bir işlevi dağıtırken veya güncellerken kod paketinin boyutunu küçültmek amacıyla işlevlerinizin bağımlı olduğu ortak kütüphaneleri bir katmana çıkarabilir veya Function Compute genel katmanlarını kullanabilirsiniz. Bu konuda katmanların nasıl çalıştığı, her çalışma zamanının desteklediği dizinler, bir katman ZIP dosyasının nasıl oluşturulacağı ve özel bir katmanın nasıl oluşturulup silineceği açıklanmaktadır.

Çalışma mantığı

Bir katman oluştururken tüm içeriğini bir ZIP dosyasında paketleyin. Çalışma zamanında Function Compute, katman içeriğini ayıklar ve /opt dizinine dağıtır. Bir işlev için birden fazla katman yapılandırdığınızda katman içeriği, katmanların yapılandırılma sırasının tersine göre /opt dizininde birleştirilir. Bir katmandaki bir dosya başka bir katmandaki dosyayla aynı ada sahipse önce yapılandırılan katmandaki dosya, sonra yapılandırılan katmandaki dosyanın üzerine yazar.

Örneğin, bir işlev için 1. Katman ve 2. Katmanı yapılandırırsanız işlev örneği başlatılırken önce 2. Katmanı ardından 1. Katmanı yükler ve her iki katmanı da /opt dizinine ayıklar. /opt dizininde önce 1. Katmanın içeriği yer alır, ardından 2. Katmanın içeriği gelir. 1. Katman ve 2. Katman aynı adlara sahip dosyalar içeriyorsa 1. Katmandaki dosyalar 2. Katmandaki dosyaların üzerine yazar.

Oluşturma gereksinimleri:

  • Bir katman ikili kütüphaneler veya yürütülebilir dosyalar içeriyorsa Linux üzerinde (Debian 9 önerilir) oluşturun.

  • Function Compute x86_64 mimarisinde çalışır. Komut setine bağlı bağımlılıklar için uyumluluğu sağlamak üzere x86_64 makine kullanın veya çapraz derleme yapın.

Çalışma zamanına göre desteklenen dizinler

Bir çalışma zamanı katmanları destekliyorsa Function Compute, aşağıdaki dizinleri çalışma zamanı dilinin bağımlılık arama yoluna ekler. İşlev kodunuzun açık yollar belirtmeden katman içeriğine erişebilmesi için katman ZIP paketinizi bu yollara uygun şekilde yapılandırın. Bir katman ZIP dosyasının nasıl oluşturulacağı hakkında ayrıntılı bilgi için bkz. Katman ZIP dosyası oluşturma.

Çalışma Zamanı Dizin yolu
Python /opt/python
Node.js /opt/nodejs/node_modules
Java /opt/java/lib
PHP /opt/php
Diğer çalışma zamanları (özel çalışma zamanı ve özel konteyner çalışma zamanı hariç) /opt/bin (PATH), /opt/lib (LD_LIBRARY_PATH)
Özel çalışma zamanı ve özel konteyner çalışma zamanı Yok

Bunun yerine özel bir dizin yapısı kullanıyorsanız bağımlılık arama yolunu işlev kodunuzda açıkça ekleyin. Ayrıntılar için bkz. Özel çalışma zamanında katmandaki bağımlılıklara nasıl başvurulur.

Katman ZIP dosyası yapısı

Aşağıdaki örnekler, her çalışma zamanı için gerekli ZIP dosyası yapısını ve ilgili dağıtım yollarını göstermektedir.

Python — requests bağımlılığı ile paketleme:

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

Extracted to:
/opt/python/requests

Node.js — uuid bağımlılığı ile paketleme:

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

Extracted to:
/opt/nodejs/node_modules/uuid

Java — commons-lang3 bağımlılığı ile paketleme:

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

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

PHP — Composer bağımlılıkları ile paketleme:

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

Extracted to:
/opt/php/vendor

Katman ZIP dosyası oluşturma

Bir katman ZIP dosyası oluşturmak, bir kod paketi oluşturmaya benzer. Function Compute'ın çalışma zamanında bir katmanda yayımlanan kütüphaneleri doğru şekilde yüklemesi için kütüphane kodunun dizin yapısının her dilin standart dizin kurallarına uyması gerekir. Ayrıntılar için bkz. Çalışma zamanına göre desteklenen dizinler. Katman bağımlılıklarınızı belirtilen şekilde paketlerseniz Function Compute her dil için bağımlılık arama yolunu otomatik olarak ekler ve tam yolu belirtmeniz gerekmez.

Her çalışma zamanı için bir katman ZIP dosyası oluşturmak üzere aşağıdaki adımları uygulayın:

Not
  • Bir katmanı yerel olarak oluştururken Function Compute'ta seçtiğiniz çalışma zamanı sürümüyle aynı programlama dili sürümünü kullanın.

  • Aşağıdaki adımlarda oluşturulan my-layer-code çalışma dizini yalnızca bir örnektir. Dizin adını ihtiyacınıza göre değiştirebilirsiniz.

Python çalışma zamanı

Not

Bir katmanı yerel olarak oluştururken Function Compute'ta seçtiğiniz Python çalışma zamanı sürümüyle aynı Python sürümünü kullanın.

  1. Bir çalışma dizini oluşturun:

    mkdir my-layer-code
    cd my-layer-code
  2. Bağımlılıkları python alt dizinine yükleyin:

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

    pip install komutu hakkında ayrıntılı bilgi için bkz. pip install.

    numpy ile örnek:

    pip install --target ./python numpy

    Yükleme sonrasında dizin yapısı şu şekilde görünür:

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs
  3. Bağımlılıkları my-layer-code dizininden paketleyin:

    zip -r my-layer-code.zip python

Node.js çalışma zamanı

Not

Bir katmanı yerel olarak oluştururken Function Compute'ta seçtiğiniz Node.js çalışma zamanı sürümüyle aynı Node.js sürümünü kullanın.

  1. Bir çalışma dizini oluşturun:

    mkdir my-layer-code
    cd my-layer-code
  2. Bağımlılıkları nodejs alt dizinine yükleyin:

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

    ${PackageName} yüklemek istediğiniz bağımlılık paketinin adıdır. npm install komutu hakkında ayrıntılı bilgi için bkz. npm-install.

    uuid ile örnek:

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

    Yükleme sonrasında dizin yapısı şu şekilde görünür:

    my-layer-code
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └── package.json
  3. Bağımlılıkları my-layer-code dizininden paketleyin:

    zip -r my-layer-code.zip nodejs

Java çalışma zamanı

  1. Bir çalışma dizini oluşturun:

    mkdir my-layer-code/java
    cd my-layer-code/java
  2. Bağımlılıklarınızı bildiren bir pom.xml dosyası oluşturun. Aşağıdaki örnek commons-lang3 öğesini yükler ve maven-dependency-plugin kullanarak ./lib dizinine kopyalar:

    <?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. Bağımlılıkları yükleyin:

    mvn dependency:copy-dependencies

    Yükleme sonrasında dizin yapısı şu şekilde görünür:

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. Bağımlılıkları my-layer-code dizininden paketleyin:

    zip -r my-layer-code.zip java

PHP çalışma zamanı

  1. Bir çalışma dizini oluşturun:

    mkdir -p my-layer-code/php
    cd my-layer-code/php
  2. Bağımlılıklarınızı bildiren bir composer.json dosyası oluşturun. Örnek:

    {
      "require": {
        "aliyunfc/fc-php-sdk": "~1.2",
        "alibabacloud/fnf": "^1.7"
      }
    }
  3. Bağımlılıkları yükleyin:

    composer install

    Yükleme sonrasında dizin yapısı şu şekilde görünür:

    my-layer-code
    └── php
        ├── composer.json
        ├── composer.lock
        └── vendor
  4. Bağımlılıkları my-layer-code dizininden paketleyin:

    zip -r my-layer-code.zip php

Özel katman oluşturma

Konsolu kullanma

Ön koşullar

Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

Adımlar

  1. Function Compute konsoluna giriş yapın. Sol gezinme bölmesinde Advanced Features > Layers seçeneğini belirleyin.

  2. Üst gezinme çubuğunda bir bölge seçin. Layers sayfasında Create Layer seçeneğine tıklayın.

  3. Aşağıdaki parametreleri yapılandırın ve ardından Create seçeneğine tıklayın.

    Parametre Açıklama
    Name Katman için bir ad girin.
    Description Katmanları birbirinden ayırt etmenize yardımcı olması için katman için bir açıklama girin.
    Compatible Runtime Bu katmanla uyumlu çalışma zamanlarını seçin.
    Layer Upload Method Katmanın bağımlılıklarını yükleme yöntemini seçin: Upload Layer in ZIP Package — bir .zip dosyası yükleyin (maksimum 500 MB); Upload Layer in Folder — Function Compute'ın .zip dosyasına sıkıştırdığı bir klasör seçin (maksimum 500 MB); Upload Layer Using OSS — Object Storage Service (OSS) içindeki .zip dosyasının Bucket Name ve Object Name değerlerini belirtin (maksimum 500 MB); Build Dependency Layer Online — İşleviniz Python veya Node.js'de geliştirildiyse ya da hafif sistem kütüphaneleri yüklemeniz gerekiyorsa katmanı çevrimiçi olarak oluşturabilirsiniz. Bağımlılık dosyasının içeriğini (Python için requirements.txt veya Node.js için package.json) aşağıdaki giriş kutusuna girin. İsteği gönderdikten sonra Function Compute dil düzeyindeki bağımlılık paketlerini ve sistem kütüphanelerini otomatik olarak yükler; bu işlem katman bağımlılığı yönetimini basitleştirir.
    Build Environment Build Dependency Layer Online seçildiğinde görünür. Katmanı oluşturmak için çalışma zamanını seçin. Şu anda yalnızca Python ve Node.js çalışma zamanları desteklenmektedir.
    apt command Build Dependency Layer Online seçildiğinde görünür. Sistem paketlerini katmana yüklemek için apt install sonrasında paket adlarını girin.

    Katman oluşturulduktan sonra otomatik olarak bir katman sürümü oluşturulur. Sürüm numarası 1'den başlar ve her yeni sürümle birlikte artar.

    Not

    OSS paketi Key Management Service (KMS) tarafından şifrelenmişse Function Compute hizmet bağlantılı rolünün (AliyunServiceRoleForFC) şifrelenmiş nesnelere erişim izni olmayabilir ve bu durum AccessDenied hatasına neden olabilir. Bu sorunu çözmek için KMS konsolunda anahtar ilkesini güncelleyerek AliyunServiceRoleForFC rolüne erişim izni verin. Ayrıntılar için bkz. Anahtar ilkesini değiştirme. Anahtar ilkesini güncelledikten sonra izin değişikliğinin etkili olduğunu doğrulamak için katman yüklemeyi yeniden deneyin.

  4. Mevcut bir katmana yeni bir sürüm eklemek için:

    Not

    Mevcut bir katmanı veya herhangi bir sürümünü değiştiremezsiniz. Bir katmanı güncellemek için yeni bir katman veya yeni bir katman sürümü oluşturun. Başvurulan bir katman sürümü silinirse katman yapılandırmasını güncellemeden önce başvuruyu kaldırın.

    1. Layers sayfasında hedef katmanın adına tıklayın.

    2. Version Management bölümünde Create Version seçeneğine tıklayın.

    3. Bir çalışma zamanı seçin, yeni katman kodunu yükleyin ve Create seçeneğine tıklayın.

Serverless Devs'i kullanma

Ön koşullar

Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

Adımlar

  1. Bir katman oluşturmak için aşağıdaki komutu çalıştırın:

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

    Aşağıdaki tabloda komuttaki parametreler açıklanmaktadır.

    Parametre Açıklama
    --code Katman kod paketinin yolu.
    --compatible-runtime Virgülle ayrılmış uyumlu çalışma zamanı listesi.
    --layer-name Katmanın adı.

    Katman oluşturulduktan sonra komut katmanın Alibaba Cloud Resource Name (ARN) değerini döndürür. ARN, hesap kimliği tanımlayıcısı, katman adı ve katman sürümünden oluşan ve sayı işaretleriyle (#) ayrılan üç bölümden oluşur. Oluşturulan katman hakkındaki bilgileri görüntülemek için Function Compute konsoluna da giriş yapabilirsiniz.

  2. Mevcut bir katmana yeni bir sürüm eklemek için aynı katman adıyla aynı komutu çalıştırın:

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

    Mevcut bir katmanı veya herhangi bir sürümünü değiştiremezsiniz. Bir katmanı güncellemek için yeni bir katman veya yeni bir katman sürümü oluşturun. Başvurulan bir katman sürümü silinirse katman yapılandırmasını güncellemeden önce başvuruyu kaldırın.

Katman veya katman sürümü silme

Artık ihtiyaç duymadığınız katmanları veya katman sürümlerini silebilirsiniz. Silinen bir katman artık işlev yapılandırmalarında görüntülenemez veya başvuruda kullanılamaz. Ancak silinen katmana zaten başvuran işlevlerin yürütülmesi etkilenmez.

  1. Function Compute konsoluna giriş yapın. Sol gezinme bölmesinde Advanced Features > Layers seçeneğini belirleyin.

  2. Üst gezinme çubuğunda bir bölge seçin.

  3. Layers sayfasında bir katmanı veya katman sürümünü silin:

    • Katman silme: Hedef katmanı bulun, Actions sütunundaki Delete seçeneğine tıklayın, onay onay kutusunu işaretleyin ve Delete seçeneğine tıklayın.

    • Katman sürümü silme: Hedef katmanın adına tıklayın. Katman ayrıntıları sayfasındaki Version Management bölümünde hedef sürümü bulun, Actions sütunundaki Delete seçeneğine tıklayın ve Confirm iletişim kutusunda Delete seçeneğine tıklayın.

Sonraki adımlar

  • Özel bir katman oluşturduktan sonra işlevin katman tarafından sağlanan kaynaklara erişebilmesi için katmanı Function Compute konsolu veya Serverless Devs aracılığıyla bir işleve bağlayın. Ayrıntılar için bkz. Özel katman yapılandırma.

  • API'yi çağırarak veya SDK'yı kullanarak bir işlev oluştururken veya güncellerken layers parametresini ayarlayarak katmanları da yönetebilir ve yapılandırabilirsiniz. Ayrıntılar için bkz. CreateFunction ve UpdateFunction.

  • Katman bağımlılıklarınız paylaşılan kütüphaneler içeriyorsa veya yerel ortamınız Function Compute çalışma zamanıyla uyumsuzsa katmanı konsolda veya yerel olarak oluşturamazsınız. Bunun yerine katmanı bir Dockerfile'dan oluşturun. Ayrıntılar için bkz. Katman oluşturmak için Dockerfile kullanma.