Anda dapat menerapkan fungsi dengan menggunakan Serverless Devs dan Konsol Fungsi Komputasi dan menggunakan fungsi tersebut untuk mendekompresi otomatis file ZIP yang memenuhi aturan dekompresi setelah file diunggah ke Object Storage Service (OSS).
Catatan Penggunaan
Disarankan untuk mengkodekan nama file atau folder dalam UTF-8 atau GB 2312. Jika tidak, nama file atau folder yang didekompresi mungkin rusak, atau proses dekompresi bisa gagal.
Saat mengunggah file terkompresi ke Bucket OSS, jangan pilih penyimpanan arsip atau arsip dingin. Jika tidak, fungsi mungkin tidak dapat dieksekusi dengan benar.
Disarankan menggunakan utilitas baris perintah zip standar untuk mengompres file guna mencegah kegagalan dekompresi.
Ukuran file terkompresi yang ingin Anda unggah ke Bucket OSS harus kurang dari atau sama dengan 1 GB. Jika tidak, file mungkin gagal didekompresi.
Waktu untuk mendekompresi file ZIP tidak boleh lebih dari dua jam. Jika file ZIP gagal didekompresi dalam waktu ini, tugas akan dihentikan.
Secara default, periode timeout fungsi untuk mendekompresi objek OSS adalah dua jam. Anda dapat menyesuaikan periode timeout sesuai kebutuhan bisnis Anda.
Prosedur
Gunakan Konsol Fungsi Komputasi
Prasyarat
Fungsi Komputasi telah diaktifkan. Untuk informasi lebih lanjut, lihat Langkah 1 di Buat Fungsi dengan Cepat.
OSS telah diaktifkan dan bucket telah dibuat. Untuk informasi lebih lanjut, lihat Mulai Menggunakan Konsol OSS.
Prosedur
Masuk ke Konsol Fungsi Komputasi. Di panel navigasi kiri, klik Applications.
Di halaman Applications, klik Create Application.
Di halaman Buat Aplikasi, pilih metode pembuatan aplikasi.
Dalam topik ini, Use a Template to Create an Application dipilih.
Klik tab Template Populer. Pada tab tersebut, gerakkan pointer ke kartu yang digunakan untuk membuat aplikasi untuk mendekompresi otomatis file yang diunggah, seperti start-unzip-oss, dan klik Create Now.
Di halaman Create Application, konfigurasikan parameter dan klik Create and Deploy Default Environment.
Tabel berikut menjelaskan parameter yang memerlukan pengaturan manual. Pertahankan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Konfigurasi Dasar
Deployment Type
Pilih Directly Deploy.
Role Name
AliyunFCServerlessDevsRole dipilih secara default. Jika kebijakan yang ada tidak memenuhi persyaratan Anda, klik Add Policy. Dalam kotak dialog yang muncul, pilih kebijakan yang ingin ditambahkan dan klik Add.
Pengaturan Lanjutan
Region
Pilih wilayah tempat Anda ingin menyebarkan aplikasi.
Service name
Tetapkan nama layanan tempat aplikasi yang akan dibuat termasuk.
Function name
Tetapkan nama fungsi tempat aplikasi yang akan dibuat termasuk.
RAM's ARN
Pilih peran yang digunakan untuk memicu fungsi. Pastikan bahwa kebijakan AliyunOSSFullAccess dan AliyunFCDefaultRolePolicy dilampirkan pada peran tersebut.
OSS bucket name
Pilih bucket yang sudah ada.
Prefix
Tentukan awalan yang terkandung dalam nama file yang diunggah untuk didekompresi. Nilai default adalah src. Jangan tetapkan awalan yang sama untuk dua pemicu di bucket yang sama.
Decompress destination directory
Tetapkan direktori tempat file yang didekompresi disimpan. Nilai default adalah dst.
CatatanUntuk mencegah pemicuan loop, atur direktori ini ke nilai yang berbeda dari nilai Prefix.
Whether to use the compressed file name as the path directory
Tentukan apakah akan menggunakan nama file terkompresi sebagai nama direktori tempat file yang didekompresi disimpan. Perhatikan item berikut:
true: menggunakan nama file terkompresi sebagai nama direktori. Sebagai contoh, Decompress destination directory diatur ke target dan nama file terkompresi adalah source.zip, maka jalur file yang didekompresi adalah target/source/....
false: tidak menggunakan nama file terkompresi sebagai nama direktori. Dalam contoh sebelumnya, jalur file yang didekompresi adalah target/....
Trigger RAM role ARN
Nilai default adalah AliyunOSSEventNotificationRole. OSS menggunakan peran ini untuk mengirim notifikasi acara untuk memanggil fungsi.
Uji aplikasi.
Unggah file ZIP ke direktori yang sesuai dengan Prefix yang ditentukan. Fungsi terkait dipicu untuk mendekompresi file ke direktori yang ditentukan oleh parameter Decompress destination directory.
Sebagai contoh, jika Anda mengatur Prefix ke source, mengatur Decompression Destination Directory ke target, ketika Anda mengunggah file ZIP ke source atau source1, fungsi dipicu untuk mendekompresi file ke target.
(Disarankan) Gunakan Serverless Devs
Prasyarat
Fungsi Komputasi telah diaktifkan. Untuk informasi lebih lanjut, lihat Langkah 1 di Buat Fungsi dengan Cepat.
OSS telah diaktifkan dan bucket telah dibuat. Untuk informasi lebih lanjut, lihat Mulai Menggunakan Konsol OSS.
Serverless Devs telah diinstal dan dikonfigurasi. Untuk informasi lebih lanjut, lihat Instal Serverless Devs dan Konfigurasi Serverless Devs.
Prosedur
Jalankan perintah berikut untuk mengunduh proyek demo:
git clone git@github.com:awesome-fc/decompress-oss.gitJalankan perintah berikut untuk masuk ke direktori proyek:
cd decompress-ossEdit informasi konfigurasi dalam file s.yaml dan simpan file tersebut.
Ubah nilai parameter
bucketNamedariyour-bucketmenjadi nama bucket yang Anda buat.(Opsional) Modifikasi nilai parameter
Prefix,Suffix, danPROCESSED_DIRuntuk pemicu OSS.
CatatanDalam contoh ini,
src/adalah awalan pemicu OSS. Anda dapat mengatur parameter Awalan kesrc. Secara default, file yang didekompresi disimpan didst/.Jalankan perintah berikut untuk menyebarkan proyek:
sudo s fc-decompress-oss-invoke-fc-EnhancedInstance deploy -yContoh keluaran:
Memeriksa Layanan, Fungsi, Pemicu (18.63s) Membuat Layanan, Fungsi, Pemicu (13.44s) Ada konfigurasi otomatis dalam layanan: enhancedInstance-decompress Tips untuk langkah selanjutnya ====================== * Tampilkan informasi sumber daya yang diterapkan: s info * Tampilkan metrik: s metrics * Tampilkan log: s logs * Panggil fungsi jarak jauh: s invoke * Hapus Layanan: s remove service * Hapus Fungsi: s remove function * Hapus Pemicu: s remove trigge * Hapus Domain Kustom: 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 dengan ekstensi .zip, .tar, atau .gz ke direktori yang ditentukan di bucket dan picu fungsi untuk mendekompresi file tersebut.
Dalam contoh ini, direktori default adalah src/. File yang didekompresi secara otomatis dihasilkan di direktori yang ditentukan dst/.
Referensi
Jika Anda hanya perlu mendekompresi file ZIP yang diunggah ke OSS, Anda dapat mengonfigurasi dekompresi otomatis untuk file ZIP di konsol OSS. Untuk informasi lebih lanjut, lihat Gunakan Fungsi Komputasi untuk Mendekompresi Otomatis File.
Jika Anda ingin mengaitkan lebih dari 10 pemicu dengan bucket, Anda dapat membuat pemicu OSS berbasis EventBridge. Untuk informasi lebih lanjut, lihat Konfigurasikan Pemicu OSS Berbasis EventBridge.
Jika Anda ingin menggunakan Fungsi Komputasi untuk mengunduh objek sebagai paket, lihat Gunakan Fungsi Komputasi untuk Mengunduh Beberapa Objek sebagai Paket.