全部产品
Search
文档中心

Function Compute:Gunakan Function Compute untuk mengemas dan mengunduh beberapa objek dari OSS

更新时间:Jul 02, 2025

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:

  1. Pengguna memanggil fungsi dan menentukan Bucket OSS serta objek yang akan dikompresi.

  2. Function Compute mengunduh objek dari OSS dan mengompresnya menjadi file ZIP.

  3. Function Compute mengunggah file ZIP ke OSS.

  4. Function Compute mengembalikan URL file ZIP di OSS.

  5. 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

Prosedur

  1. Jalankan perintah berikut untuk menginisialisasi proyek:

    sudo s init start-zip-oss -d start-zip-oss 
  2. Jalankan perintah berikut untuk mengakses proyek dan menerapkannya:

    cd start-zip-oss && sudo s deploy - y

    Setelah 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-test
  3. Setelah aplikasi diterapkan, panggil fungsi yang telah diterapkan untuk mengunduh beberapa file sekaligus.

    1. Buat file event.json di direktori start-zip-oss dan tentukan nama bucket serta objek yang akan diunduh di dalam file.

      • Gunakan source-dir untuk menentukan direktori tempat objek yang akan diunduh berada.

        cat <<EOF > event.json
        {
          "bucket": "bucketname", 
          "source-dir": "filepath/"
        }
        EOF
      • Gunakan source-files untuk menentukan daftar objek yang akan diunduh.

        cat <<EOF > event.json
        {
          "bucket": "bucketname", 
          "source-files": ["files1.txt","filepath/files2.txt"]
        }
        EOF
    2. Gunakan perintah curl untuk langsung memanggil fungsi.

      Buat folder di direktori start-zip-oss untuk menyimpan file terkompresi. Dalam contoh ini, folder tmp digunakan. Potongan kode berikut menunjukkan contoh perintah curl:

      Catatan

      Ganti titik akhir dalam perintah sampel dengan nilai system_url yang dikembalikan setelah aplikasi diterapkan.

      curl -v -L -o /tmp/my.zip -d @./event.json https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.run

      Setelah 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 direktori output bucket.

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