全部产品
Search
文档中心

Function Compute:Buat Fungsi Custom Container

更新时间:Dec 09, 2025

Jika runtime bawaan di Function Compute tidak memenuhi kebutuhan bisnis Anda, gunakan runtime Custom Container untuk membuat fungsi. Panduan ini menjelaskan cara membuat fungsi Custom Container menggunakan konsol Function Compute atau Serverless Devs.

Catatan Penggunaan

Untuk membuat fungsi Custom Container di Function Compute, gunakan gambar dari Container Registry Alibaba Cloud yang berada di wilayah yang sama dengan fungsi dan milik akun yang sama. Jika menggunakan komputer berbasis ARM seperti Mac dengan chip Apple, tentukan platform kompilasi gambar sebagai linux/amd64. Contoh perintah: docker build --platform linux/amd64 -t $IMAGE_NAME ..

Prasyarat

Buat fungsi di konsol Function Compute

Langkah 1: Buat layanan dan konfigurasikan izin

  1. Buat layanan di Kelola layanan

    Untuk detail lebih lanjut, lihat Buat layanan.

  2. Lampirkan kebijakan AliyunContainerRegistryReadOnlyAccess atau AliyunContainerRegistryFullAccess ke layanan.

    Untuk detail lebih lanjut, lihat Berikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya. Kebijakan-kebijakan ini memungkinkan Function Compute mendapatkan akun sementara untuk masuk ke instance default Container Registry dan mendorong gambar dari repositori pribadi Anda.

Langkah 2: Buat fungsi

  1. Masuk ke konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.

  3. Pada halaman Functions, klik Create Function.

  4. Pada halaman Create Function, pilih Use Container Image, konfigurasikan parameter berikut sesuai kebutuhan bisnis Anda, lalu klik Create.

    • Basic Settings: Konfigurasikan informasi dasar fungsi, termasuk nama fungsi dan jenis penanganan.

      Parameter

      Deskripsi

      Function Name

      Masukkan nama untuk fungsi. Function Compute secara otomatis membuat nama untuk fungsi Anda jika Anda membiarkan parameter ini kosong.

      Handler Type

      Tentukan jenis permintaan yang diproses oleh fungsi. Permintaan tersebut dapat berupa permintaan acara atau permintaan HTTP. Nilai valid:

      • Event Handler: memicu eksekusi fungsi dengan menggunakan timer, memanggil operasi API, menggunakan SDK, atau menggunakan pemicu layanan Alibaba Cloud lainnya.

      • HTTP Handler: memicu eksekusi fungsi dengan mengirimkan permintaan HTTP atau membangun koneksi WebSocket. Untuk skenario web, kami sarankan Anda memilih Use Custom Runtime untuk membuat fungsi.

    • Image Configurations: Konfigurasikan gambar untuk fungsi.

      Parameter

      Deskripsi

      Image Selection Mode

      Pilih Use Sample Images atau gunakan gambar Anda sendiri untuk membuat fungsi.

      • Use Sample Image: Pilih gambar contoh bawaan dari Function Compute.

      • Use Container Registry Images: Gunakan gambar Container Registry. Klik Select a Container Registry image di bawah Container Image. Di panel Select Container Image, konfigurasikan parameter Container Image Instance dan Container Registry Repository. Temukan gambar yang ingin Anda gunakan dan klik Select di kolom Actions.

        Catatan
        • Anda tidak dapat menggunakan gambar publik yang dimiliki oleh akun lain dari Container Registry untuk membuat fungsi.

        • Untuk Container Registry Edisi Enterprise, Function Compute menggunakan tag gambar yang Anda pilih untuk membuat instance fungsi.

          • Jika Anda menggunakan gambar Container Registry Edisi Enterprise (Edisi Lanjutan atau Edisi Standar), kami sarankan Anda mengaktifkan Immutable untuk Image Version. Jika tidak, tag gambar mungkin diperbarui di tempat lain dan Function Compute menarik data gambar yang diperbarui untuk memulai instance fungsi. Untuk informasi lebih lanjut, lihat Konfigurasikan repositori agar immutable.

          • Jika Anda menggunakan gambar Container Registry Edisi Enterprise (Edisi Dasar) atau Container Registry Edisi Personal, Anda harus memperbarui fungsi berdasarkan informasi gambar di konsol Function Compute setelah Anda memperbarui tag gambar dengan nama yang sama di repositori gambar. Kemudian, Function Compute dapat memulai instance fungsi dengan gambar baru.

      Startup Command

      Tentukan perintah startup kontainer. Jika Anda tidak mengonfigurasi parameter ini, instruksi Entrypoint atau CMD dalam gambar digunakan.

      Listening Port

      Tentukan port tempat server HTTP yang diimplementasikan dalam gambar kontainer mendengarkan. Port default adalah 9000.

    • Advanced Settings: Konfigurasikan pengaturan lanjutan, seperti informasi instance dan periode timeout eksekusi.

      Parameter

      Deskripsi

      GPU Acceleration

      Tentukan apakah akan menggunakan instans yang dipercepat GPU berdasarkan kebutuhan bisnis Anda. Secara default, instans CPU, bukan instans yang dipercepat GPU, digunakan. Untuk informasi lebih lanjut, lihat Jenis instans. Untuk informasi tentang penagihan setiap jenis instans, lihat Ikhtisar penagihan. Nilai valid:

      • Enable GPU

      • Disable GPU

      Specifications

      • Enable GPU:

        Pilih nilai dari daftar drop-down GPU Type dan tentukan GPU Memory Size berdasarkan kebutuhan bisnis Anda. Function Compute secara otomatis mengisi bidang vCPU Capacity dan Memory Capacity berdasarkan ukuran memori GPU yang Anda pilih. Hanya kapasitas vCPU dan memori tertentu yang diizinkan untuk setiap ukuran GPU.

      • Disable GPU:

        Konfigurasikan vCPU Capacity dan Memory Capacity berdasarkan kebutuhan bisnis Anda.

      Untuk informasi tentang penagihan sumber daya, lihat Ikhtisar penagihan.

      Catatan

      Rasio spesifikasi vCPU terhadap kapasitas memori (dalam GB) harus berkisar antara 1:1 hingga 1:4.

      Size of Temporary Disk

      Pilih ukuran disk berdasarkan kebutuhan bisnis Anda. Function Compute menyediakan kapasitas disk gratis sebesar 512 MB. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan.

      Instance Concurrency

      Tentukan konkurensi instans. Untuk informasi lebih lanjut, lihat Konfigurasikan konkurensi instans.

      Execution Timeout Period

      Tentukan periode timeout untuk eksekusi fungsi. Nilai default adalah 60 detik. Nilai maksimum adalah 86400 detik. Kami sarankan Anda mengatur parameter ini menjadi 600 detik.

      Time Zone

      Tentukan zona waktu fungsi. Setelah Anda memilih zona waktu, variabel lingkungan TZ secara otomatis ditambahkan ke fungsi. Nilai variabel tersebut adalah zona waktu yang Anda pilih.

    • Environment Variables: Konfigurasikan variabel lingkungan dalam runtime fungsi. Untuk detail lebih lanjut, lihat Variabel lingkungan.

    • Trigger Configurations: Konfigurasikan pemicu untuk pemanggilan fungsi. Untuk detail lebih lanjut, lihat Kelola pemicu.

    Setelah fungsi dibuat, Anda dapat melihat dan memperbarui fungsi di daftar fungsi layanan.

Catatan

Saat memperbarui fungsi, Anda dapat mengubah port listening yang ditentukan, tetapi tidak dapat menghapus atau menambahkan port lain. Jika port listening ditentukan saat pembuatan fungsi, port tersebut akan dipertahankan selama pembaruan jika tidak ada port baru yang ditentukan.

Buat fungsi menggunakan Serverless Devs

Gunakan Serverless Devs untuk membangun dan mendorong gambar kontainer serta menerapkan fungsi hanya dengan beberapa langkah.

  1. Jalankan perintah berikut untuk menginisialisasi proyek. Masukkan alamat repositori gambar yang Anda buat di Container Registry sesuai petunjuk.

    sudo s init start-fc-custom-container-event-nodejs14

    Keluaran berikut dikembalikan:

     Serverless Awesome: https://github.com/Serverless-Devs/package-awesome
    
     Please input your project name (init dir) start-fc-custom-container-event-nodejs14
     file decompression completed
    
         ____  _     _ ___  _ _     _        _____ ____
        /  _ \/ \   / \\  \/// \ /\/ \  /|  /    //   _\
        | / \|| |   | | \  / | | ||| |\ ||  |  __\|  /
        | |-||| |_/\| | / /  | \_/|| | \||  | |   |  \__
        \_/ \|\____/\_//_/   \____/\_/  \|  \_/   \____/
     please select credential alias default
    
        Welcome to the Aliyun FC start application
         This application requires to open these services:
             FC : https://fc.console.alibabacloud.com/
             ACR: https://cr.console.alibabacloud.com/
    
         * Note: The actions information is declared in the s.yaml file: 
            Run the sudo s build --use-docker --dockerfile ./code/Dockerfile command before the project is deployed.
           If you do not need to build the project, you can comment out this part. 
           > Note: Before project deployment, replace the value of the image parameter in the s.yaml file with the address of the image repository in Container Registry. 
         * The project is initialized. You can go to the project directory and run the s deploy command to deploy the project. 
    
     Thanks for using Serverless-Devs
     You could [cd /test/test1/start-fc-custom-container-event-nodejs14] and enjoy your serverless journey!
     If you need help for this example, you can use [s -h] after you enter folder.
     Document Star: https://github.com/Serverless-Devs/Serverless-Devs
     Do you want to deploy the project immediately?  No
  2. Jalankan perintah berikut untuk masuk ke direktori proyek:

    cd start-fc-custom-container-event-nodejs14
  3. Edit file s.yaml. Untuk informasi lebih lanjut tentang parameter dalam file .yaml, lihat Sintaks YAML dan manajemen izin.

  4. Jalankan perintah berikut untuk menerapkan proyek:

    sudo s deploy

    Keluaran berikut dikembalikan:

    [2021-12-15 07:54:30] [INFO] [S-CLI] - Start ...
    [2021-12-15 07:54:30] [INFO] [S-CLI] - Start the pre-action
    [2021-12-15 07:54:30] [INFO] [S-CLI] - Action: s build --use-docker --dockerfile ./code/Dockerfile
    [2021-12-15 07:54:31] [INFO] [S-CLI] - Start ...
    [2021-12-15 07:54:32] [INFO] [FC-BUILD] - Build artifact start...
    [2021-12-15 07:54:32] [INFO] [FC-BUILD] - Use docker for building.
    [2021-12-15 07:54:32] [INFO] [FC-BUILD] - Building image...
    Sending build context to Docker daemon   5.12kB
    Step 1/7 : FROM node:14.5.0-alpine3.11
     ---> 5d97b3d11dc1
    ......
    Step 7/7 : ENTRYPOINT [ "node", "server.js" ]
     ---> Using cache
     ---> a5ef1c015e7e
    Successfully built a5ef1c015e7e
    Successfully tagged registry.cn-hangzhou.aliyuncs.comSuccessfully tagged registry.cn-hangzhou.aliyuncs.com/fc-example/test:nginx  
    SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.  
    Build image(registry.cn-hangzhou.aliyuncs.com/fc-example/test:nginx) successfully  
    [2021-12-15 07:54:33] [INFO] [FC-BUILD] - Build artifact successfully.  
    
    Tips for next step  
    ======================  
    * Invoke Event Function: s local invoke  
    * Invoke Http Function: s local start  
    * Deploy Resources: s deploy  
    End of method: build  
    [2021-12-15 07:54:33] [INFO] [S-CLI] - End the pre-action  
    [2021-12-15 07:54:34] [INFO] [FC-DEPLOY] - Using region: cn-hangzhou  
    [2021-12-15 07:54:34] [INFO] [FC-DEPLOY] - Using access alias: default  
    [2021-12-15 07:54:34] [INFO] [FC-DEPLOY] - Using accessKeyID: yourAccessKeyID  
    [2021-12-15 07:54:34] [INFO] [FC-DEPLOY] - Using accessKeySecret: yourAccessKeySecret  
    [2021-12-15 07:54:34] [INFO] [FC-DEPLOY] - Checking Service hello-world-service exists  
    [2021-12-15 07:54:35] [INFO] [FC-DEPLOY] - Setting role: AliyunFCDefaultRole  
    [2021-12-15 07:54:35] [INFO] [RAM] - Checking Role AliyunFCDefaultRole exists  
    [2021-12-15 07:54:35] [INFO] [RAM] - Updating role: AliyunFCDefaultRole  
    [2021-12-15 07:54:35] [INFO] [RAM] - Checking Plicy AliyunFCDefaultRolePolicy exists  
    [2021-12-15 07:54:35] [INFO] [FC-DEPLOY] - Checking Function nodejs14-event-function exists  
    [2021-12-15 07:54:36] [INFO] [FC-DEPLOY] - Using image registry: registry.cn-hangzhou.aliyuncs.com  
    [2021-12-15 07:54:36] [INFO] [FC-DEPLOY] - Try to use a temporary token for docker login  
    Login to registry: registry.cn-hangzhou.aliyuncs.com with user: cr_temp_user  
    Pushing docker image: registry.cn-hangzhou.aliyuncs.com/fc-example/test:nginx...  
    The push refers to repository [registry.cn-hangzhou.aliyuncs.com/fc-example/test]  
    cdf38e7753b7: Layer already exists                                                                                                                                                           43128f71725b: Layer already exists                                                                                                                                                           0fb36a16ab83: Layer already exists                                                                                                                                                           dd966b9fd474: Layer already exists                                                                                                                                                           a1915d7a1111: Layer already exists                                                                                                                                                           c4491b3ee709: Layer already exists                                                                                                                                                           9fb10d900487: Layer already exists                                                                                                                                                           3e207b409db3: Layer already exists                                                                                                                                                           nginx: digest: sha256:02b69157def85ceb72f32cb1c5845d00e1d8df19caf6eaf720a9bc77bb57db76 size: 1991  
    √ Make service hello-world-service success.  
    √ Make function hello-world-service/nodejs14-event-function success.  
    [2021-12-15 07:54:39] [INFO] [FC-DEPLOY] - Checking Service hello-world-service exists  
    [2021-12-15 07:54:39] [INFO] [FC-DEPLOY] - Checking Function nodejs14-event-function exists  
    
    There is auto config in the service: hello-world-service  
    
    Tips for next step  
    ======================  
    * Display information of the deployed resource: s info  
    * Display metrics: s metrics  
    * Display logs: s logs  
    * Invoke remote function: s invoke  
    * Remove Service: s remove service  
    * Remove Function: s remove function  
    * Remove Trigger: s remove trigger  
    * Remove CustomDomain: s remove domain  
    
    
    
    helloworld:  
      region:   cn-hangzhou  
      service:  
        name: hello-world-service  
      function:  
        name:       nodejs14-event-function  
        runtime:    custom-container  
        handler:    not-used  
        memorySize: 256  
        timeout:    60
  5. Jalankan perintah berikut untuk men-debug fungsi:

    sudo s invoke -e "{\"key\":\"val\"}"

    Keluaran berikut dikembalikan:

    [2021-12-15 08:00:17] [INFO] [S-CLI] - Start ...  
    ========= FC invoke Logs begin =========  
    FC Invoke Start RequestId: 768945c8-f92d-428e-89c2-ecd50883****  
    {"key":"val"}  
    FC Invoke End RequestId: 768945c8-f92d-428e-89c2-ecd50883****  
    
    Duration: 3.05 ms, Billed Duration: 4 ms, Memory Size: 256 MB, Max Memory Used: 10.77 MB  
    ========= FC invoke Logs end =========  
    
    FC Invoke Result:  
    OK  
    
    
    End of method: invoke

Referensi

  • Untuk menggunakan instans yang dipercepat GPU, Anda harus membuat fungsi Custom Container. Untuk informasi lebih lanjut tentang instans yang dipercepat GPU, lihat Jenis instans dan mode penggunaan.

  • Dibandingkan dengan paket kode, gambar kontainer sering kali memerlukan waktu lebih lama untuk mengunduh dan dekompresi karena mencakup lingkungan runtime yang diperlukan. Untuk informasi tentang cara mengurangi latensi ini, lihat Praktik terbaik untuk mitigasi cold start.

  • Anda juga dapat memanggil API Function Compute untuk membuat fungsi. Untuk informasi lebih lanjut, lihat CreateFunction.

  • Untuk informasi tentang skenario umum dan perbedaan antara runtime bawaan, runtime kustom, dan runtime Custom Container, lihat Pemilihan runtime fungsi.