Konfigurasikan aturan dekompresi untuk mengekstrak secara otomatis paket ZIP yang diunggah ke direktori OSS tertentu. Function Compute mendekompresi paket tersebut dan menyimpan objek hasil ekstraksi ke direktori tujuan.
Prasyarat
Function Compute telah diaktifkan. Untuk mengaktifkannya, buka halaman Function Compute.
Skenario
Unggah batch: Kompres banyak objek kecil menjadi satu paket ZIP untuk mengurangi waktu unggah.
Kelengkapan sumber daya: Gabungkan file terkait ke dalam satu paket ZIP untuk memastikan semua komponen diunggah bersamaan.
Pelestarian struktur direktori: Kemas struktur direktori lokal ke dalam file ZIP lalu unggah ke OSS. Aturan dekompresi akan mereplikasi struktur folder asli di dalam bucket.
Pengiriman konten: Kompres objek ke dalam paket ZIP lalu unggah ke OSS. Paket tersebut didekompresi ke direktori tertentu, sehingga mengurangi waktu transmisi dan penggunaan bandwidth.
Cara kerja
OSS menggunakan Function Compute untuk mendekompresi paket ZIP yang diunggah. Gambar berikut menunjukkan prosesnya.
Paket ZIP diunggah ke direktori yang ditentukan oleh parameter Prefix dalam aturan dekompresi.
Pemicu Function Compute dipanggil.
Saat Anda mengonfigurasi aturan dekompresi, otorisasi pemicu agar OSS dapat menggunakan peran AliyunOSSEventNotificationRole untuk mengakses Function Compute.
Function Compute mendekompresi paket ZIP dan menyimpan objek hasil ekstraksi ke direktori OSS yang ditentukan.
Saat Anda mengonfigurasi aturan dekompresi, otorisasi Function Compute untuk membaca dari dan menulis ke bucket OSS.
Penagihan
Dekompresi paket ZIP dikenai biaya baik di sisi OSS maupun Function Compute. Transfer data antara OSS dan Function Compute melalui internal endpoint tidak dikenai biaya.
Di sisi OSS, Anda dikenai biaya untuk pemanggilan operasi API dan penyimpanan objek. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.
Di sisi Function Compute, Anda dikenai biaya berdasarkan penggunaan vCPU, penggunaan memori, dan penggunaan disk sesuai durasi eksekusi. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.
Sebagai contoh, jika tugas dekompresi paket ZIP menggunakan instans Function Compute dengan memori 3 GB dan vCPU 2-core serta membutuhkan waktu 5 menit untuk menyelesaikan dekompresi, dan ukuran disk default yang dialokasikan untuk file penyimpanan sementara adalah 10 GB, maka biaya yang dikenakan oleh Function Compute dihitung berdasarkan rumus berikut:
Item penggunaan sumber daya | Unit | Rumus | Contoh penagihan |
vCPU usage | vCPU-seconds | Active vCPU usage = kapasitas vCPU × durasi eksekusi (detik) | Jika fungsi dikonfigurasi dengan 2 vCPU dan berjalan selama 300 detik, penggunaan vCPU untuk satu kali eksekusi dihitung dengan rumus berikut: 2 × 300 = 600 vCPU-seconds. |
Memory usage | GB-seconds | Memory usage = kapasitas memori (GB) × durasi eksekusi (detik) | Jika fungsi dikonfigurasi dengan ukuran memori 3 GB dan berjalan selama 300 detik, penggunaan memori untuk satu kali eksekusi dihitung dengan rumus berikut: 3 × 300 = 900 GB-seconds |
Disk usage | GB-seconds | Disk usage = kapasitas disk (GB) × durasi eksekusi (detik) Catatan: Penggunaan disk hingga 512 MB tidak dikenai biaya. | Jika fungsi dikonfigurasi dengan ukuran disk sementara 10 GB dan berjalan selama 300 detik, penggunaan disk untuk satu kali eksekusi dihitung dengan rumus berikut: (10 – 512/1024) × 300 = 2850 GB-seconds. |
Batasan
Kelas penyimpanan: Objek Cold Archive harus dipulihkan terlebih dahulu sebelum dapat didekompresi. Objek Archive di bucket yang tidak mengaktifkan fitur real-time access of Archive objects juga harus dipulihkan terlebih dahulu sebelum dapat didekompresi.
Penamaan objek dan direktori: Encode nama objek dan direktori dalam UTF-8 atau GB 2312. Encoding lain dapat menyebabkan kegagalan dekompresi atau nama yang rusak.
Ukuran objek dan durasi dekompresi: Setiap objek dalam paket ZIP tidak boleh melebihi 1 GB. Anda dapat menambah durasi dekompresi jika diperlukan. Untuk informasi selengkapnya, Apa yang harus saya lakukan jika dekompresi paket ZIP gagal karena timeout?
Konfigurasi aturan dekompresi paket ZIP
Masuk ke Konsol OSS.
Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.
Di pohon navigasi kiri, pilih .
Klik Decompress ZIP Package. Di panel Decompress ZIP Package, konfigurasikan parameter yang dijelaskan dalam tabel berikut.
Parameter
Parameter
Wajib
Deskripsi
Service Authorization
Ya
Otorisasi Function Compute untuk membaca dari dan menulis ke OSS serta mengeksekusi fungsi.
Klik Authorize. Selesaikan otorisasi pada halaman yang muncul.
Authorize Trigger
Ya
Otorisasi OSS untuk mengakses Function Compute.
Klik Authorize. Selesaikan otorisasi pada halaman yang muncul. Jika OSS telah diotorisasi untuk mengakses Function Compute, parameter Trigger Role akan ditampilkan menggantikan parameter Authorize Trigger.
Prefix
Tidak
Awalan yang harus dicocokkan oleh nama paket ZIP agar memicu dekompresi. Jika Anda mengunggah paket ZIP yang namanya mengandung awalan ini atau mengunggahnya ke direktori yang ditentukan oleh awalan tersebut, Function Compute akan mendekompresinya. Jika tidak ditentukan, semua paket ZIP yang diunggah ke bucket akan didekompresi.
PentingJika parameter ini tidak ditentukan, tugas dekompresi mungkin dieksekusi berulang kali. Oleh karena itu, kami menyarankan agar Anda menentukan awalan untuk setiap aturan dekompresi. Untuk informasi selengkapnya, lihat Bagaimana cara menghindari loop pemicu?
Destination Directory
Tidak
Direktori tempat objek hasil ekstraksi disimpan. Jika tidak ditentukan, objek didekompresi ke direktori root bucket.
Untuk menyimpan objek hasil ekstraksi di subdirektori yang dinamai sesuai paket ZIP, pilih Add the compressed object name to the destination directory.
Untuk menyimpan objek hasil ekstraksi langsung di direktori tujuan tanpa subdirektori, pilih Decompress to the destination directory. Tabel berikut menunjukkan contoh konfigurasi.
PeringatanUntuk mencegah gangguan layanan, kontaminasi data, atau kehilangan data saat mengonfigurasi aturan dekompresi paket ZIP pada bucket yang mengaktifkan OSS-HDFS, jangan mengatur Destination Directory ke
.dlsdata/.Contoh konfigurasi dekompresi
Skenario
Metode konfigurasi
Struktur penyimpanan setelah dekompresi
Dekompresi semua paket ZIP yang diunggah ke direktori zipfolder ke direktori destfolder, tanpa membuat subdirektori yang namanya sama dengan paket ZIP.
Atur Prefix ke zipfolder/.
Atur Destination Directory ke destfolder.
Pilih Decompress to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...Dekompresi semua paket ZIP yang diunggah ke direktori zipfolder ke subdirektori yang namanya sama dengan paket di direktori root bucket.
Konfigurasikan parameter berikut:
Atur Prefix ke zipfolder/.
Biarkan Destination Directory kosong.
Pilih Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...Dekompresi semua paket ZIP yang diunggah ke direktori zipfolder ke subdirektori yang namanya sama dengan paket di direktori destfolder.
Konfigurasikan parameter berikut:
Atur Prefix ke zipfolder/.
Atur Destination Directory ke destfolder.
Pilih Add the compressed object name to the destination directory.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ...Pilih I have read the terms of service and agreed to activate Function Compute and process compressed files by using Function Compute. Only file or folder names encoded in UTF-8 or GB 2312 can be processed. lalu klik OK.
Ubah aturan dekompresi paket ZIP
Ubah aturan dekompresi untuk memperbarui awalan pemicu atau konfigurasi fungsi.
Ubah parameter Prefix
Di halaman Decompress ZIP Package di Konsol OSS, temukan pemicu yang ingin diubah lalu klik Edit di kolom Actions.
Di tab Triggers halaman detail fungsi, temukan pemicu lalu klik Modify di kolom Actions.
Di panel Modify Trigger, ubah parameter Object Prefix dan pertahankan pengaturan default untuk parameter lainnya.
Klik OK.
Ubah konfigurasi fungsi
Di tab Configurations halaman detail fungsi, klik Modify di bagian Basic Settings atau bagian Environment Information.
Ubah konfigurasi fungsi, seperti Memory dan Execution Timeout Period.
Untuk informasi selengkapnya, lihat Manage functions.
Hapus pemicu
Pemicu yang dihapus tidak dapat dipulihkan. Menghapus pemicu tidak mengganggu tugas dekompresi yang sedang berjalan.
Di tab Triggers halaman detail fungsi, temukan pemicu yang ingin dihapus lalu klik Delete di kolom Actions.
Pada pesan yang muncul, klik Delete.
Peroleh hasil dekompresi
Setelah fungsi dekompresi selesai dijalankan, OSS tidak mengembalikan hasil dekompresi secara proaktif. Anda dapat menggunakan metode berikut untuk memperoleh hasil dekompresi dan meneruskannya ke layanan backend Anda.
Metode 1: Kueri status dekompresi dalam mode task
Setelah Anda mengaktifkan mode task, setiap eksekusi fungsi dekompresi menghasilkan catatan tugas asinkron. Anda dapat melihat status tugas di daftar tugas atau mengkuerinya dengan memanggil operasi API.
Di Konsol Function Compute, buka halaman detail fungsi dekompresi lalu klik tab Task.
Di area konfigurasi mode task, klik Edit, lalu aktifkan Task Mode. Secara default, Task Mode dinonaktifkan. Di area yang sama, Anda juga dapat mengonfigurasi Maximum Retry Attempts (default: 3), Message Time to Live (default: 1 hari), dan Invocation Destination (default: tidak dikonfigurasi).
Setelah Task Mode diaktifkan, setiap eksekusi fungsi dekompresi menghasilkan catatan tugas asinkron. Daftar tugas menampilkan ID tugas, status tugas, waktu mulai dan selesai, durasi eksekusi, jumlah percobaan ulang, request ID, dan ID instans.
Anda juga dapat memanggil operasi
GetAsyncTaskFunction Compute untuk mengkueri status tugas. Status tugas yang dikembalikan bernilai Succeeded menunjukkan bahwa tugas dekompresi berhasil diselesaikan.
Metode 2: Konfigurasi tujuan pemanggilan asinkron untuk notifikasi otomatis
Di area konfigurasi mode task, aktifkan Invoke Another Service on Success atau Invoke Another Service on Failure untuk memberi notifikasi otomatis ke layanan tujuan tertentu setelah tugas dekompresi selesai. Jenis layanan tujuan berikut didukung:
Function Compute (FC)
ApsaraMQ for RocketMQ
Simple Message Queue (formerly MNS)
EventBridge
Metode 3: Kirim notifikasi ke layanan backend Anda melalui callback HTTP kustom
Tujuan pemanggilan asinkron bawaan tidak mendukung callback HTTP kustom. Jika Anda perlu memberi notifikasi ke layanan backend yang dikelola sendiri—misalnya, layanan yang dideploy di kluster ACK—mengenai hasil dekompresi, gunakan pendekatan berikut:
Buat fungsi Function Compute yang mengirim permintaan notifikasi HTTP ke endpoint layanan backend Anda.
Konfigurasikan fungsi ini sebagai tujuan pemanggilan asinkron fungsi dekompresi dengan mengikuti langkah-langkah pada Metode 2.
Setelah tugas dekompresi selesai, Function Compute memanggil fungsi ini, yang kemudian mengirim notifikasi HTTP ke layanan backend Anda.
