Tutorial ini menjelaskan cara menerapkan fungsi menggunakan Serverless Devs atau Konsol Function Compute. Mengunggah file ZIP yang sesuai dengan aturan tertentu ke Object Storage Service (OSS) akan memicu fungsi untuk mendekompresi file tersebut secara otomatis.
Catatan penggunaan
Gunakan encoding UTF-8 atau GB 2312 untuk nama file dan folder Anda. Jika tidak, nama file atau folder hasil dekompresi mungkin menjadi rusak (garbled) atau proses dekompresi dapat terganggu.
Saat mengunggah file terkompresi ke bucket, jangan memilih tipe penyimpanan arsip atau cold archive storage. Jika dipilih, fungsi tidak akan terpicu.
Gunakan alat baris perintah ZIP standar untuk membuat file terkompresi guna mencegah kegagalan dekompresi.
Setiap file dalam arsip terkompresi tidak boleh melebihi 1 GB. Jika melebihi, dekompresi mungkin gagal.
Batas waktu untuk mendekompresi satu arsip adalah 2 jam. Tugas yang melebihi batas ini akan gagal.
Batas waktu eksekusi default untuk fungsi adalah 2 jam. Anda dapat menyesuaikan timeout ini sesuai kebutuhan bisnis Anda.
Cara kerja
Otomatisasi dekompresi dengan Konsol Function Compute
Prasyarat
Prosedur
Masuk ke Konsol Function Compute. Pada panel navigasi di sebelah kiri, klik Applications.
Pada halaman Applications, klik Create Application.
Pada halaman Create Application, pilih metode untuk membuat aplikasi.
Tutorial ini menunjukkan opsi Use a Template to Create an Application.
Di bagian templat, pilih tab Hot Templates. Temukan kartu start-unzip-oss, arahkan kursor ke atasnya, lalu klik Create Now.
Pada halaman Create Application, konfigurasikan parameter berikut, lalu klik Create and Deploy Default Environment.
Tabel berikut menjelaskan parameter utama. Anda dapat menggunakan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Konfigurasi dasar
Deployment Type
Pilih Directly Deploy.
Role Name
Nilai default adalah AliyunFCServerlessDevsRole. Jika izin saat ini tidak mencukupi, klik Add Policy, pilih kebijakan di kotak dialog, lalu klik Add.
Pengaturan lanjutan
Region
Pilih wilayah tempat Anda ingin menerapkan aplikasi.
Service name
Tentukan nama layanan untuk aplikasi.
Function name
Tentukan nama fungsi untuk aplikasi.
RAM role ARN
Pilih peran yang digunakan OSS untuk memicu fungsi. Pastikan peran tersebut memiliki kebijakan izin AliyunOSSFullAccess dan AliyunFCDefaultRolePolicy yang dilampirkan.
OSS bucket name
Pilih bucket yang sudah ada.
Prefix
Tetapkan awalan file. Nilai default adalah src. Pemicu berbeda dalam bucket yang sama tidak boleh memiliki awalan file yang sama.
Decompress destination directory
Tentukan direktori tujuan untuk file hasil dekompresi. Nilai default adalah dst.
CatatanUntuk mencegah loop pemicu, pastikan direktori ini berbeda dari Prefix.
Keep file name as directory
Menentukan apakah akan membuat subdirektori yang dinamai sesuai file terkompresi. Nilai yang valid:
true: Mempertahankan nama file terkompresi sebagai direktori dalam jalur tujuan. Misalnya, jika decompress destination directory adalah target dan nama file terkompresi adalah source.zip, maka jalur file setelah dekompresi adalah target/source/....
false: Mengekstrak file langsung ke direktori target. Dalam contoh sebelumnya, jalur file setelah ekstraksi adalah target/....
Trigger RAM role ARN
Nilai default adalah AliyunOSSEventNotificationRole. OSS menggunakan peran ini untuk mengirim notifikasi event guna memanggil fungsi.
Uji aplikasi.
Mengunggah file .zip ke jalur yang diawali dengan Prefix yang ditentukan akan memicu fungsi aplikasi, yang secara otomatis mendekompresi file tersebut dan menyimpan hasilnya ke Decompress destination directory yang ditentukan.
Sebagai contoh, jika Anda menetapkan prefix ke source dan decompress destination directory ke target, maka saat Anda mengunggah file .zip ke source atau source1, fungsi akan terpicu dan file tersebut secara otomatis didekompresi serta disimpan ke target.
(Direkomendasikan) Otomatisasi dekompresi dengan Serverless Devs
Prasyarat
Aktifkan Function Compute. Untuk informasi selengkapnya, lihat Buat fungsi dengan cepat.
Aktifkan OSS dan buat bucket. Untuk informasi selengkapnya, lihat Memulai dengan Konsol OSS.
Instal dan konfigurasikan Serverless Devs. Untuk informasi selengkapnya, lihat Instal Serverless Devs dan Konfigurasikan Serverless Devs.
Prosedur
Jalankan perintah berikut untuk mengkloning proyek contoh:
git clone git@github.com:awesome-fc/decompress-oss.gitJalankan perintah berikut untuk masuk ke direktori proyek:
cd decompress-ossEdit konfigurasi dalam file s.yaml dan simpan file tersebut.
Dalam file tersebut, ubah nilai parameter
bucketNamedariyour-bucketmenjadi nama bucket yang telah Anda buat.Opsional: Ubah parameter untuk awalan pemicu OSS
Prefix, akhiranSuffix, dan direktori penyimpanan file hasil dekompresiPROCESSED_DIRsesuai kebutuhan.
CatatanDalam contoh ini, awalan pemicu OSS secara default adalah
src/, tetapi Anda juga dapat mengaturnya menjadisrc. Direktori tujuan untuk file hasil dekompresi secara default adalahdst/.Jalankan perintah berikut untuk menerapkan proyek:
sudo s fc-decompress-oss-invoke-fc-EnhancedInstance deploy -yContoh output:
Checking Service, Function, Triggers (18.63s) Creating Service, Function, Triggers (13.44s) There is auto config in the service: enhancedInstance-decompress 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 fc-decompress-oss-invoke-fc-EnhancedInstance: region: cn-hangzhou service: name: enhancedInstance-decompress function: name: oss-invoke-fc runtime: python3 handler: index.handler memorySize: 4096 timeout: 7200 triggers: - type: oss name: zip-t - type: oss name: gz-t - type: oss name: tar-tUnggah file terkompresi, seperti file .zip, .tar, atau .gz, ke direktori yang ditentukan dalam bucket untuk memicu fungsi dekompresi.
Dalam contoh ini, direktori default adalah src/, dan file hasil ekstraksi secara otomatis dibuat di dst/.
Referensi
Jika Anda hanya perlu mendekompresi file ZIP yang diunggah ke OSS, Anda dapat mengonfigurasi dekompresi file ZIP otomatis langsung di Konsol OSS. Untuk informasi selengkapnya, lihat Unggah paket ZIP dan dekompresi secara otomatis.
Jika Anda memerlukan lebih dari 10 pemicu untuk satu bucket, Anda dapat membuat pemicu OSS berbasis EventBridge. Untuk informasi selengkapnya, lihat Konfigurasikan pemicu OSS berbasis EventBridge.
Jika Anda perlu menggunakan Function Compute untuk mengemas dan mengunduh objek dari OSS sebagai file ZIP, lihat Unduh beberapa file sebagai paket ZIP.