Saat mengunduh objek dari Object Storage Service (OSS), mengunduhnya satu per satu dapat menjadi tidak praktis jika ukuran objek kecil tetapi jumlahnya besar. Anda dapat menggunakan Function Compute untuk mengemas dan mengunduh beberapa objek dari OSS ke komputer lokal sekaligus. Solusi ini memungkinkan pengunduhan lebih cepat dengan biaya yang lebih rendah.
Proses dan prinsip
Proses
Bagan alur berikut menjelaskan proses mengunduh beberapa objek dari OSS sekaligus menggunakan Function Compute:
Pengguna memanggil fungsi dan menentukan Bucket OSS serta objek yang akan dikompresi.
Function Compute mengunduh objek dari OSS dan mengompresnya menjadi file ZIP.
Function Compute mengunggah file ZIP ke OSS.
Function Compute mengembalikan URL file ZIP di OSS.
Unduh file ZIP menggunakan URL yang dikembalikan pada Langkah 4.
Prinsip
Gambar berikut menunjukkan implementasi Langkah 2 dan Langkah 3 pada bagan alur sebelumnya.
Solusi ini memberikan manfaat sebagai berikut:
Metode unduhan dan unggahan streaming digunakan, sehingga hanya sejumlah kecil data yang disimpan dalam memori. Ruang disk terbatas dari lingkungan runtime fungsi pun tidak terkonsumsi.
Fitur unggahan multipart dari OSS digunakan untuk mengunggah bagian-bagian file ZIP secara bersamaan dalam mode multi-threaded.
Prasyarat
Function Compute telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan Function Compute.
OSS telah diaktifkan dan sebuah bucket dibuat di OSS. Untuk informasi lebih lanjut, lihat Mulai Menggunakan Konsol OSS.
Serverless Devs telah diinstal dan dikonfigurasi. Untuk informasi lebih lanjut, lihat Instal Serverless Devs dan Konfigurasikan Serverless Devs.
Prosedur
Jalankan perintah berikut untuk menginisialisasi proyek:
sudo s init start-zip-oss -d start-zip-ossJalankan perintah berikut untuk mengakses proyek dan menerapkannya:
cd start-zip-oss && sudo s deploy - ySetelah penerapan, keluaran serupa dengan potongan kode berikut akan dikembalikan. Catat nilai dari
system_url, karena nilai ini diperlukan saat memanggil fungsi.Memeriksa Layanan, Fungsi, Pemicu (2.44s) Membuat Layanan, Fungsi, Pemicu (1.18s) ...... fc-zip-oss-service: region: cn-hangzhou service: name: zip-oss function: name: zip-oss-func runtime: python3.9 handler: main.main_handler memorySize: 3072 timeout: 1800 url: system_url: https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.run system_intranet_url: https://zip-oss-func-zip-oss-****.cn-hangzhou-vpc.fcapp.run triggers: - type: http name: http-testSetelah aplikasi diterapkan, panggil fungsi yang telah diterapkan untuk mengunduh beberapa file sekaligus.
Buat file event.json di direktori
start-zip-ossdan tentukan nama bucket serta objek yang akan diunduh di dalam file.Gunakan
source-diruntuk menentukan direktori tempat objek yang akan diunduh berada.cat <<EOF > event.json { "bucket": "bucketname", "source-dir": "filepath/" } EOFGunakan
source-filesuntuk menentukan daftar objek yang akan diunduh.cat <<EOF > event.json { "bucket": "bucketname", "source-files": ["files1.txt","filepath/files2.txt"] } EOF
Gunakan perintah curl untuk langsung memanggil fungsi.
Buat folder di direktori
start-zip-ossuntuk menyimpan file terkompresi. Dalam contoh ini, foldertmpdigunakan. Potongan kode berikut menunjukkan contoh perintah curl:CatatanGanti titik akhir dalam perintah sampel dengan nilai
system_urlyang dikembalikan setelah aplikasi diterapkan.curl -v -L -o /tmp/my.zip -d @./event.json https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.runSetelah pemanggilan, Anda dapat melihat file terkompresi yang diunduh di folder
start-zip-oss/tmp. Masuk ke konsol OSS dan lihat file terkompresi yang diunduh di direktorioutputbucket.
Data uji
Uji | Jumlah objek | Total ukuran sebelum kompresi | Total ukuran setelah kompresi | Durasi eksekusi |
1 | 7 | 1,2 MB | 1,16 MB | 0,4 detik |
2 | 57 | 1,06 GB | 0,91 GB | 63 detik |
Deskripsi:
Uji 1 menunjukkan bahwa ruang penyimpanan objek berkurang jika Anda menggunakan Function Compute untuk mengunduh beberapa objek sekaligus.
Uji 2 menunjukkan bahwa sejumlah besar objek dapat diunduh dalam waktu singkat jika Anda menggunakan Function Compute untuk mengunduh beberapa objek sekaligus.
Informasi lebih lanjut
Anda dapat menerapkan fungsi di Function Compute untuk secara otomatis mendekompresi file ZIP di OSS. Anda juga dapat mengonfigurasi dekompresi otomatis di OSS. Untuk informasi lebih lanjut, lihat Gunakan Function Compute untuk Secara Otomatis Mendekompresi File di OSS dan Dekompresi Paket ZIP.
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.