Jika runtime bawaan di Function Compute tidak memenuhi kebutuhan bisnis Anda, Anda dapat membuat fungsi kontainer kustom melalui Konsol Function Compute atau menggunakan alat Serverless Devs.
Catatan penggunaan
-
Untuk membuat fungsi kontainer kustom di Function Compute, Anda harus menggunakan gambar dari Alibaba Cloud Container Registry yang berada dalam wilayah dan Akun Alibaba Cloud yang sama. Jika Anda membuat gambar pada komputer dengan Apple silicon atau arsitektur berbasis ARM lainnya, tentukan platform build sebagai linux/amd64. Contoh:
docker build --platform linux/amd64 -t $IMAGE_NAME .. -
Function Compute melakukan resolusi nama domain untuk gambar Alibaba Cloud Container Registry Edisi Perusahaan menggunakan resolusi default dari virtual private cloud (VPC) yang dikonfigurasi atau alamat IP akses yang diselesaikan secara otomatis oleh Alibaba Cloud DNS PrivateZone.
-
Skenario 1: Jika indikator Default Resolution tidak ditampilkan untuk alamat IP apa pun pada halaman Access Control instans, semua alamat IP dalam daftar Access IP diselesaikan secara otomatis oleh Alibaba Cloud DNS PrivateZone. Dalam kasus ini, konfigurasi VPC apa pun dapat digunakan.

-
Skenario 2: Jika pada halaman Access Control instans Container Registry (ACR) Edisi Perusahaan, daftar Access IP berisi alamat IP yang ditandai dengan Default Resolution, maka alamat IP tersebut merupakan alamat IP resolusi default dari VPC. Anda harus memilih konfigurasi VPC tersebut, seperti yang ditunjukkan pada gambar berikut.

-
-
Saat menggunakan instans Edisi Perusahaan, Anda hanya dapat memilih gambar non-dipercepat. Setiap kali Anda memperbarui konfigurasi gambar fungsi, sistem akan menghasilkan gambar dipercepat baru berdasarkan gambar asli terbaru yang Anda pilih, menimpa gambar dipercepat yang ada sebelumnya. Jangan menghapus gambar asli atau gambar dipercepat karena pemanggilan fungsi akan terpengaruh.
-
Pastikan Anda segera memperbarui fungsi jika gambar yang dikonfigurasi untuknya berubah. Jika tidak, pemanggilan fungsi akan gagal.
-
Pastikan gambar asli tersedia. Jika tidak, fungsi akan masuk ke status Failed dan tidak dapat dipanggil. Meskipun Function Compute menyimpan cache fungsi Anda untuk mengurangi waktu cold start, pemanggilan tetap memerlukan gambar asli.
-
Pastikan gambar yang digunakan dalam fungsi Anda tidak ditimpa dengan digest yang berbeda. Jika hal ini terjadi, Anda harus menerapkan ulang fungsi dengan informasi gambar terbaru. Function Compute mencatat tag dan digest dari versi gambar yang Anda pilih saat pembuatan dan pembaruan fungsi. Jika tag gambar diperbarui di tempat lain agar mengarah ke digest baru, pemanggilan fungsi akan gagal.
-
Prasyarat
-
Container Registry
-
Catatan
-
Edisi Personal Alibaba Cloud Container Registry (ACR) ditujukan untuk pengembang individu. Edisi ini ditawarkan sebagai uji coba gratis dengan kuota selama masa beta publik. Edisi ini tidak mencakup Service Level Agreement (SLA) atau kompensasi atas kerugian, serta memiliki batasan penggunaan. Untuk informasi lebih lanjut tentang batasan penggunaan, lihat catatan penggunaan di Buat instans Edisi Personal.
-
-
-
Serverless Devs (diperlukan hanya jika Anda membuat fungsi menggunakan Serverless Devs)
Buat fungsi di konsol
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik Create Function.
-
Pada kotak dialog yang muncul, pilih tipe GPU Function sesuai petunjuk dan skenario aktual Anda, lalu klik Create GPU Function.
-
Pada halaman Create GPU Function, konfigurasikan parameter berikut dan klik Create.
-
Basic Configurations: Masukkan Function Name. Nama harus unik dalam akun dan wilayah yang sama, serta mengikuti konvensi penamaan.
-
Scaling Policy: Pilih tipe instans. Anda tidak dapat menggunakan instans yang disediakan dan instans sesuai permintaan secara bersamaan, dan tipe instans tidak dapat diubah setelah fungsi dibuat.
-
On-demand instances
Configuration Item
Description
Example
Instance Type
Pilih On-demand Instance. Instans diskalakan sesuai volume permintaan dan dilepas saat tidak ada permintaan. Ditagih per penggunaan.
On-demand Instance
GPU Card Type
Pilih tipe kartu GPU. Spesifikasi yang tersedia bervariasi berdasarkan tipe (Tipe dan spesifikasi instans).
Ada series
Specifications
Tetapkan spesifikasi GPU Memory, vCPU, Memory, dan Disk. Ditagih berdasarkan spesifikasi × durasi (Ikhtisar penagihan).
Catatan-
Semua direktori disk dapat ditulis dan berbagi ruang yang sama.
-
Data disk hilang saat instans diklaim ulang. Untuk persistensi, pasang sistem file NAS (Konfigurasi sistem file NAS) atau bucket OSS (Konfigurasi Object Storage Service).
-
GPU Memory: 48 GB
-
vCPU: 8 vCPU
-
Memory: 64 GB
-
Disk: 512 MB (tidak ditagih, Function Compute menyediakan kuota gratis 10 GB ruang disk)
Minimum Instances
Untuk beban kerja yang sensitif terhadap latensi, pilih Elastic Instance dan atur minimum menjadi 1 atau lebih untuk mengurangi latensi cold start.
CatatanJika tidak ada kebijakan elastis yang dikonfigurasi atau aktif, jumlah instans minimum secara default menggunakan nilai ini.
Dengan beberapa kebijakan elastis aktif, Minimum Number Of Instances tertinggi menjadi Minimum Number Of Instances efektif.
1
Concurrency Per Instance
Memungkinkan satu instans GPU menangani beberapa permintaan secara konkuren. Konfigurasi konkurensi per instans.
-
-
Provisioned instances
Configuration Item
Description
Example
Instance Type
Pilih Provisioned Instance. Instans berasal dari kolam sumber daya yang telah dibeli sebelumnya.
Paling cocok untuk biaya yang dapat diprediksi, latensi rendah, dan utilisasi tinggi.
Provisioned Instance
Provisioned Resource Pool
Kolam instans yang telah dibeli sebelumnya untuk fungsi. Jika kapasitas tidak mencukupi, klik Scale-out di kolom Actions. Kolam sumber daya yang disediakan (langganan).
-
Provisioned Resource Pool: fc-pool-****
-
GPU Card Type: Ada
Specifications
Tetapkan spesifikasi GPU Memory, vCPU, Memory, dan Disk. Ditagih berdasarkan spesifikasi × durasi (Ikhtisar penagihan).
Catatan-
Semua direktori disk dapat ditulis dan berbagi ruang yang sama.
-
Data disk hilang saat instans diklaim ulang. Untuk persistensi, pasang sistem file NAS (Konfigurasi sistem file NAS) atau bucket OSS (Konfigurasi Object Storage Service).
GPU Memory: 48 GB
vCPU: 8 vCPU
Memory: 64 GB
Disk: 512 MB (tidak ditagih, Function Compute menyediakan kuota gratis 10 GB ruang disk)
Number Of Provisioned Instances
Alokasikan instans dari kapasitas kolam yang tersedia.
1
Concurrency Per Instance
Memungkinkan satu instans GPU menangani beberapa permintaan secara konkuren. Konfigurasi konkurensi per instans.
20
-
-
-
Code: Konfigurasikan lingkungan runtime dan pengaturan terkait kode fungsi.
Parameter
Description
Example
Runtime
-
Use Sample Images : Pilih contoh gambar yang disediakan oleh Function Compute untuk menerapkan fungsi kontainer kustom dengan cepat. Anda harus memilih gambar target dari daftar di bawah parameter Container Image.
-
Use Container Registry Images : Klik Select ACR Image di bawah parameter Container Image. Di panel Select Container Image , pilih Container Registry Instance dan ACR Image Repository yang sudah ada. Lalu, temukan gambar target di daftar gambar di bawah ini dan klik Select di kolom Actions.
Catatan-
Anda tidak dapat membuat fungsi menggunakan gambar publik dari instans Alibaba Cloud Container Registry milik akun lain.
-
Pastikan Anda segera memperbarui fungsi jika gambar yang dikonfigurasi untuknya berubah. Jika tidak, pemanggilan fungsi akan gagal. Untuk informasi lebih lanjut, lihat Catatan penggunaan.
-
Saat menggunakan instans Edisi Perusahaan, Anda hanya dapat memilih gambar non-dipercepat. Jangan menghapus gambar asli atau gambar dipercepat, karena pemanggilan fungsi akan terpengaruh. Untuk informasi lebih lanjut, lihat Catatan penggunaan.
-
Instans Edisi Perusahaan tidak mendukung alamat gambar dalam format nama domain kustom.
-
Anda tidak dapat membuat fungsi menggunakan gambar dari repositori yang mengaktifkan akselerasi gambar dalam mode index-only. Hal ini berlaku untuk instans Container Registry Edisi Perusahaan (Standard dan Advanced).
-
Setelah Alibaba Cloud Container Registry memperkenalkan fitur index-only mode, Anda tidak dapat lagi membuat fungsi menggunakan gambar dari repositori yang baru dibuat di instans Edisi Perusahaan (Basic) jika akselerasi gambar diaktifkan. Namun, Anda masih dapat menggunakan gambar dari repositori akselerasi yang sudah ada di instans tersebut. Untuk informasi lebih lanjut tentang index-only mode, lihat Muat gambar kontainer sesuai permintaan.
Container Image
Pilih gambar target.
SpringBoot Web App Sample Image
Startup Command
Perintah startup untuk program. Jika tidak ditentukan, Function Compute menggunakan Entrypoint atau CMD dari gambar secara default.
None
Listening Port
Port tempat server HTTP dalam kode Anda mendengarkan.
9000
Execution Timeout Period
Tetapkan periode timeout. Execution Timeout Period default-nya 60 detik, dengan maksimum 86.400 detik.
60
-
-
Instance Prefetch: Melakukan pre-warm model untuk menghilangkan latensi cold start pada permintaan pertama dalam skenario inferensi AI.
Configuration Item
Description
Example
Instance Prefetch
Instance Prefetch
Menjalankan skrip atau memanggil antarmuka untuk memuat model setelah instans dimulai tetapi sebelum menangani permintaan.
Enabled
Timeout
Timeout untuk hook Initializer.
60
Prefetch Program Type
Dua tipe hook: Execute Instruction dan Invoke Code.
Execute Instruction
Instruction Content
Instruksi yang akan dieksekusi. Mendukung shell kustom:
/bin/bash,/bin/sh,/bin/csh,/bin/zsh. Pastikan runtime mendukung shell yang dipilih. -
Permissions, Network, and Storage: Konfigurasikan peran eksekusi fungsi, jaringan, dan pemasangan penyimpanan.
Configuration Item
Description
Example
Execution Role
Function Compute mengasumsikan peran Resource Access Management (RAM) ini untuk menghasilkan kredensial sementara guna mengakses sumber daya Alibaba Cloud dan meneruskannya ke kode. Untuk informasi lebih lanjut, lihat Gunakan peran fungsi untuk mengakses layanan cloud lainnya.
mytestrole
VPC Access
Memungkinkan fungsi mengakses sumber daya dalam VPC. Untuk informasi lebih lanjut, lihat Konfigurasi jaringan.
Enable
VPC
Diperlukan saat VPC Access diatur ke Yes. Buat VPC baru atau pilih ID VPC yang akan diakses dari daftar drop-down.
fc.auto.create.vpc.1632317****
vSwitch
Diperlukan saat VPC Access diatur ke Yes. Buat vSwitch baru atau pilih ID vSwitch dari daftar drop-down.
fc.auto.create.vswitch.vpc-bp1p8248****
Security Group
Diperlukan saat VPC Access diatur ke Yes. Buat grup keamanan baru, atau pilih grup keamanan dari daftar drop-down.
fc.auto.create.SecurityGroup.vsw-bp15ftbbbbd****
Allow Default NIC to Access Internet
Pilih Yes atau No untuk mengizinkan fungsi mengakses Internet melalui antarmuka jaringan default.
PentingSaat menggunakan fitur alamat IP publik tetap, Anda harus menonaktifkan Allow Default NIC to Access Internet. Jika tidak, alamat IP publik tetap yang dikonfigurasi tidak akan berlaku. Untuk informasi lebih lanjut, lihat Konfigurasi alamat IP publik statis.
Enable
NAS Mounting
Pasang Konfigurasi sistem file NAS ke fungsi untuk penyimpanan persisten data yang dibagikan di antara fungsi, seperti model yang dibagikan oleh beberapa fungsi inferensi.
Jika Anda memilih Automatic Configuration, sistem menggunakan sistem file network-attached storage (NAS) tujuan umum bernama Alibaba-Fc-V3-Component-Generated secara default. Jika tidak ada sistem file NAS yang memenuhi syarat di bawah akun saat ini, sistem akan membuatnya secara otomatis.
Enable
OSS Mounting
Pasang Object Storage Service (OSS) ke fungsi untuk penyimpanan persisten log, file bisnis, dan lainnya. Untuk informasi lebih lanjut, lihat Konfigurasi pemasangan OSS.
Enable
-
Logging and Tracing
Configuration Item
Description
Example
Log Feature
Konfigurasikan opsi ini untuk menyimpan log eksekusi fungsi ke Log Service secara persisten guna debugging kode, troubleshooting, dan analisis data. Untuk informasi lebih lanjut, lihat Konfigurasi fitur logging.
-
Automatic Configuration: Secara otomatis memilih Log Project yang dimulai dengan
serverless-<region_id>.Hanya satu Log Project semacam itu yang dibuat per wilayah. Jika sistem mendeteksi Log Project yang sudah ada di wilayah saat ini, Log Project tersebut akan digunakan langsung.
-
Custom Configuration: Anda harus menentukan secara manual Log Project dan Logstore target.
Enable
-
-
Other Configurations
Configuration Item
Description
Example
Timezone
Pilih zona waktu untuk fungsi. Setelah Anda mengatur zona waktu, variabel lingkungan TZ akan ditambahkan secara otomatis dengan nilai yang diatur ke zona waktu target.
UTC
Tags
Tetapkan Konfigurasi tag untuk fungsi guna mendukung manajemen kelompok. Anda harus menetapkan kunci tag dan nilai tag.
key : value
Resource Group
Pilih Konfigurasi kelompok sumber daya untuk fungsi guna mengelola fungsi berdasarkan kelompok.
Default Resource Group
Environment Variables
Gunakan variabel lingkungan untuk menyesuaikan perilaku fungsi tanpa mengubah kode. Untuk informasi lebih lanjut, lihat Konfigurasi variabel lingkungan.
{ "BUCKET_NAME": "MY_BUCKET", "TABLE_NAME": "MY_TABLE" }
Setelah membuat fungsi, Anda dapat melihat dan memperbaruinya di halaman Functions.
-
Saat memperbarui fungsi, Anda dapat mengubah port pendengar yang dikonfigurasi, tetapi tidak dapat menambah atau menghapus port. Jika Anda mengonfigurasi port pendengar saat membuat fungsi dan tidak menentukannya selama pembaruan, sistem akan mempertahankan konfigurasi port asli.
Buat fungsi dengan Serverless Devs
Gunakan Serverless Devs untuk membuat dan mendorong gambar kontainer serta menerapkan fungsi dengan alur perintah tunggal.
-
Jalankan perintah berikut untuk menginisialisasi proyek.
sudo s initIkuti petunjuk di layar untuk memilih akun Alibaba Cloud, templat kontainer kustom, dan bahasa (Node.js digunakan dalam contoh ini). Lalu, atur nama proyek, pilih wilayah penerapan, dan masukkan gambar ACR Anda.
-
Jalankan perintah berikut untuk masuk ke direktori proyek.
cd start-fc3-custom-container-nodejs -
Edit file
s.yaml. Untuk informasi lebih lanjut tentang parameter dalam file YAML, lihat Spesifikasi YAML.Kode berikut memberikan contoh.
Dalam contoh ini,
imagemerujuk pada gambar Alibaba Cloud Container Registry Anda. Ganti <your namespace>, <your image>, dan <your tag> dengan namespace, nama repositori gambar, dan tag gambar aktual Anda. Jika Anda sudah memasukkan informasi gambar yang benar saat menginisialisasi proyek di Langkah 1, Anda tidak perlu mengubahnya di sini.edition: 3.0.0 name: hello-world-app # access menentukan konfigurasi kunci yang diperlukan oleh aplikasi saat ini: # Untuk konfigurasi kunci, lihat: https://www.serverless-devs.com/serverless-devs/command/config # Untuk urutan penggunaan kunci, lihat: https://www.serverless-devs.com/serverless-devs/tool#key-usage-order-and-specifications access: "default" vars: # Variabel global region: "cn-hangzhou" resources: hello_world: # Untuk melakukan operasi hanya pada modul bisnis hello_world, tambahkan hello_world ke baris perintah. Misalnya: # Untuk membangun hanya hello_world: s hello_world build # Jika Anda menjalankan s build langsung tanpa menentukan hello_world, tool akan membangun semua modul bisnis di tingkat yang sama dengan hello_world dalam file YAML saat ini (jika ada modul saudara lain, seperti next_function yang dikomentari di bawah) dalam urutan tertentu component: fc3 # Nama komponen actions: # Logika eksekusi kustom pre-deploy: # Jalankan sebelum deploy - component: fc3 build --dockerfile ./code/Dockerfile # Komponen yang dijalankan, dalam format "component: nama_komponen parameter_perintah" props: region: ${vars.region} # Untuk penggunaan variabel, lihat: https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC functionName: "start-nodejs-ufrz" runtime: "custom-container" description: 'hello world by serverless devs' timeout: 30 memorySize: 512 cpu: 0.5 diskSize: 10240 code: ./code customContainerConfig: image: 'registry.${vars.region}.aliyuncs.com/<your namespace>/<your image>:<your tag>' # Gambar ACR Anda. Ganti <your namespace>, <your image>, dan <your tag> dengan nama namespace, nama repositori gambar, dan tag gambar aktual. # triggers: # - triggerName: httpTrigger # Nama pemicu # triggerType: http # Jenis pemicu # description: 'xxxx' # qualifier: LATEST # Versi layanan yang dipicu # triggerConfig: # authType: anonymous # Jenis autentikasi. Nilai valid: anonymous, function # disableURLInternet: false # Menentukan apakah URL akses jaringan publik dinonaktifkan # methods: # Metode HTTP yang didukung oleh pemicu HTTP. Nilai valid: GET, POST, PUT, DELETE, HEAD # - GET # - POST -
Jalankan perintah berikut untuk menerapkan proyek.
sudo s deployOutput berikut adalah contoh:
Steps for [deploy] of [hello-world-app] ==================== DEPRECATED: The legacy builder is deprecated and will be removed in a future release. BuildKit is currently disabled; enable it by removing the DOCKER_BUILDKIT=0 environment-variable. Sending build context to Docker daemon 5.12kB Step 1/7 : FROM node:14-buster 14-buster: Pulling from library/node 2ff1d7c41c74: Already exists b253aeafeaa7: Already exists 3d2201bd995c: Already exists 1de76e268b10: Already exists d9a8df589451: Already exists 6f51ee005dea: Already exists 5f32ed3c3f27: Already exists 0c8cc2f24a4d: Already exists 0d27a8e86132: Already exists Digest: sha256:a158d3b9b4e3fa813fa6c8c590b8f0a860e015ad4e59bbce5744d2f6fd8461aa Status: Downloaded newer image for node:14-buster ---> 1d12470fa662 Step 2/7 : WORKDIR /usr/src/ ---> Running in 70a8e2e4d1ea Removing intermediate container 70a8e2e4d1ea ---> 0d67b8fa2901 Step 3/7 : COPY package*.json ./ ---> 09eb15f8770a Step 4/7 : RUN npm install ---> Running in 8ae492be973b Step 5/7 : COPY . . ---> 7560c7b14431 Step 6/7 : EXPOSE 9000 ---> Running in 66b38e54ced0 Removing intermediate container 66b38e54ced0 ---> f73cce48d2ae Step 7/7 : ENTRYPOINT [ "node", "server.js" ] ---> Running in 2fb2f83fd6c0 Removing intermediate container 2fb2f83fd6c0 ---> fe51ae71448c Successfully built fe51ae71448c Successfully tagged registry.cn-hangzhou.aliyuncs.com/z****/z****:latest [2024-01-29 16:33:06][INFO][hello_world] get instanceName= and region=cn-hangzhou from registry.cn-hangzhou.aliyuncs.com/z****/z**** [2024-01-29 16:33:06][INFO][hello_world] try to docker push registry.cn-hangzhou.aliyuncs.com/z****/z**** ... WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded Using default tag: latest The push refers to repository [registry.cn-hangzhou.aliyuncs.com/z****/z****] 85c1ec915b45: Pushed 37c36543a431: Pushed e4afd7f70434: Pushed 0d5f5a015e5d: Layer already exists 3c777d951de2: Layer already exists f8a91dd5fc84: Layer already exists cb81227abde5: Layer already exists e01a454893a9: Layer already exists c45660adde37: Layer already exists fe0fb3ab4a0f: Layer already exists f1186e5061f2: Layer already exists b2dba7477754: Layer already exists latest: digest: sha256:6bf1ed4119d197a46c99082577632957056cb625f2ee0276d2af53f60d22837d size: 2841 [hello_world] completed (688.45s) Result for [deploy] of [hello-world-app] ==================== region: cn-hangzhou cpu: 0.5 customContainerConfig: image: registry.cn-hangzhou.aliyuncs.com/z****/z**** resolvedImageUri: registry.cn-hangzhou.aliyuncs.com/z****/z****@sha256:6bf1ed4119d197a46c99082577632957056cb625f2ee0276d2af53f60d22837d description: hello world by serverless devs diskSize: 10240 functionName: start-nodejs-ufrz handler: handler instanceConcurrency: 1 internetAccess: true lastUpdateStatus: Successful memorySize: 512 role: runtime: custom-container state: Active timeout: 30 A complete log of this run can be found in: /root/.s/logs/0129162246 -
Jalankan perintah berikut untuk men-debug fungsi.
sudo s invoke -e "{\"key\":\"val\"}"Output berikut adalah contoh:
Steps for [invoke] of [hello-world-app] ==================== ========= FC invoke Logs begin ========= FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968 FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968 hello world! FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968 Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB ========= FC invoke Logs end ========= Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399 Code Checksum: undefined Qualifier: LATEST RequestId: 1-65b764db-15eb737f-0c67ab5cd968 Invoke Result: OK [hello_world] completed (4.96s) A complete log of this run can be found in: /root/.s/logs/0129164202
Dokumentasi terkait
-
Saat menggunakan fungsi kontainer kustom, lingkungan dasar yang bergantung pada gambar kontainer memerlukan waktu tambahan untuk mengunduh dan mendekompresi. Untuk mengurangi waktu cold start, lihat Praktik terbaik untuk mengoptimalkan cold start di Function Compute.
-
Fungsi juga dapat dibuat dengan memanggil operasi API. Untuk informasi lebih lanjut, lihat CreateFunction.
-
Untuk informasi lebih lanjut tentang skenario yang berlaku dan perbedaan antara runtime bawaan, runtime kustom, dan runtime kontainer kustom yang disediakan oleh Function Compute, lihat Pemilihan teknologi.