Saat mengintegrasikan Object Storage Service (OSS) dengan Function Compute, Anda dapat menggunakan event OSS untuk memicu eksekusi fungsi dan memproses data di OSS. Topik ini menjelaskan batas, jenis event, serta aturan pemicu untuk pemicu OSS di Function Compute.
Informasi latar belakang
OSS terintegrasi secara mulus dengan Function Compute melalui pemicu OSS. Anda dapat menulis fungsi untuk memproses event OSS. Saat OSS menangkap event jenis tertentu, fungsi terkait akan dieksekusi. Misalnya, Anda dapat mengonfigurasi fungsi untuk memproses event PutObject. Ketika Anda memanggil operasi OSS PutObject untuk mengunggah citra ke OSS, fungsi tersebut akan dipicu secara otomatis guna memproses citra tersebut.
Dengan integrasi OSS dan Function Compute, Anda dapat menggunakan berbagai fungsi untuk memproses data citra atau audio serta menyimpan hasilnya di berbagai layanan penyimpanan. Dalam arsitektur ini, Anda hanya perlu fokus pada penulisan logika fungsi, sedangkan sistem akan memproses volume data besar secara real time, andal, dan berskala.
Batas pemicu OSS
Anda hanya dapat mengonfigurasi beberapa prefix dan suffix file untuk pemicu OSS berbasis EventBridge.
Pencocokan ekspresi reguler tidak didukung untuk prefix dan suffix file yang dikonfigurasi pada pemicu OSS native maupun pemicu OSS berbasis EventBridge.
Hanya pemicu OSS berbasis EventBridge yang mendukung pengaitan lebih dari 10 pemicu OSS ke satu bucket.
Secara umum, hindari mengaitkan lebih dari 10 pemicu ke satu bucket. Sebagai gantinya, buat bucket baru dan konfigurasikan pemicu untuk bucket tersebut.
Definisi event OSS
Saat sistem OSS menangkap event tertentu, informasi event tersebut dikodekan dalam string JSON dan diteruskan ke fungsi penangan. Untuk informasi selengkapnya tentang format notifikasi event OSS, lihat Event notifications.
Tabel berikut menjelaskan event OSS yang didukung. Jenis event ini berkorespondensi dengan operasi API, seperti ObjectCreated, ObjectRemoved, atau ObjectModified. Setiap kali operasi API dipanggil dan berhasil dieksekusi, fungsi akan dipicu untuk berjalan sekali.
Jenis event | Nama event | Deskripsi |
ObjectCreated | oss:ObjectCreated:PutObject | Panggil operasi PutObject untuk mengunggah file. Untuk informasi selengkapnya, lihat PutObject. |
oss:ObjectCreated:PutSymlink | Panggil operasi PutSymlink untuk membuat symbolic link ke objek target di OSS. Anda dapat menggunakan symbolic link ini untuk mengakses objek target. Untuk informasi selengkapnya, lihat PutSymlink. | |
oss:ObjectCreated:PostObject | Panggil operasi PostObject untuk mengunggah file ke bucket tertentu menggunakan formulir HTML. Untuk informasi selengkapnya, lihat PostObject. | |
oss:ObjectCreated:CopyObject | Panggil operasi CopyObject untuk menyalin objek yang sudah ada di OSS. Untuk informasi selengkapnya, lihat CopyObject. | |
oss:ObjectCreated:InitiateMultipartUpload | Sebelum mentransfer data dalam mode MultipartUpload, Anda harus memanggil operasi InitiateMultipartUpload untuk memberi tahu OSS agar menginisialisasi event unggah multi-bagian. Untuk informasi selengkapnya, lihat InitiateMultipartUpload. | |
oss:ObjectCreated:UploadPart | Setelah event unggah multi-bagian diinisiasi, Anda dapat mengunggah data secara bertahap berdasarkan nama objek dan upload ID yang ditentukan. Untuk informasi selengkapnya, lihat UploadPart. | |
oss:ObjectCreated:UploadPartCopy | UploadPartCopy mengunggah bagian dengan menyalin data dari objek yang sudah ada. Untuk informasi selengkapnya, lihat UploadPartCopy. | |
oss:ObjectCreated:CompleteMultipartUpload | Setelah semua bagian data diunggah, Anda harus memanggil operasi CompleteMultipartUpload untuk menyelesaikan unggah multi-bagian seluruh file. Untuk informasi selengkapnya, lihat CompleteMultipartUpload. | |
oss:ObjectCreated:AppendObject | Panggil operasi AppendObject untuk mengunggah file dengan menambahkan data. Untuk informasi selengkapnya, lihat AppendObject. | |
oss:ObjectCreated:* | Fungsi dipicu setelah salah satu operasi API ObjectCreated di atas berhasil dipanggil. | |
ObjectRemoved | oss:ObjectRemoved:DeleteObject | Panggil operasi DeleteObject untuk menghapus objek. Untuk informasi selengkapnya, lihat DeleteObject. |
oss:ObjectRemoved:DeleteObjects | Panggil operasi DeleteMultipleObjects untuk menghapus multiple file dalam satu batch. Untuk informasi selengkapnya, lihat DeleteMultipleObjects. | |
oss:ObjectRemoved:AbortMultipartUpload | Panggil operasi AbortMultipartUpload untuk menghentikan event unggah multi-bagian berdasarkan upload ID yang diberikan. Untuk informasi selengkapnya, lihat AbortMultipartUpload. | |
ObjectModified | oss:ObjectModified:UpdateObjectMeta | Panggil operasi UpdateObjectMeta untuk memodifikasi properti objek. Catatan Event ini didukung di Wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Shenzhen), dan Tiongkok (Chengdu). |
ObjectReplication | oss:ObjectReplication:ObjectCreated | Operasi tulis yang terlibat dalam proses replikasi data. |
oss:ObjectReplication:ObjectModified | Operasi timpa yang terlibat dalam proses replikasi data. | |
oss:ObjectReplication:ObjectRemoved | Operasi hapus yang terlibat dalam proses replikasi data. |
Aturan pemicu OSS
Hindari pemicuan berulang (loop)
Saat menggunakan pemicu OSS, hindari pembuatan loop pemicu. Skenario khas loop pemicu terjadi ketika event pengunggahan file ke bucket OSS memicu suatu fungsi. Setelah dieksekusi, fungsi tersebut menghasilkan satu atau beberapa file dan menuliskannya kembali ke bucket OSS yang sama. Aksi penulisan ini kemudian memicu fungsi lagi, sehingga terjadi loop tak henti.
Untuk menghindari biaya tambahan akibat pemicuan berulang, Anda dapat mengonfigurasi prefix atau suffix file. Misalnya, tetapkan prefix file pemicu sebagai src dan prefix file hasil sebagai dst. Dengan demikian, file yang dihasilkan tidak akan memicu fungsi lagi. Jika Anda tidak menetapkan prefix atau suffix, semua file—apa pun prefix atau suffix-nya—akan dicocokkan. Untuk informasi selengkapnya, lihat Langkah 1: Buat pemicu OSS.
Aturan konfigurasi untuk pemicu OSS native
Untuk mencegah pembuatan pemicu duplikat di bucket yang sama—yang dapat menyebabkan satu event mengaktifkan beberapa pemicu—Function Compute mensyaratkan bahwa konfigurasi pemicu dalam satu bucket harus memenuhi ketentuan berikut:
Kombinasi event pemicu, prefix file, dan suffix file harus unik.
Pemicu baru hanya dapat dibuat jika kombinasi event pemicu, prefix file, dan suffix file-nya tidak bertentangan dengan pemicu yang sudah ada.
Tabel berikut memberikan contoh aturan konfigurasi untuk pemicu OSS native.
Pemicu yang ada | Pemicu baru | Berhasil dibuat? | Deskripsi | ||||
Triggering event | File prefix | File suffix | Triggering event | File prefix | File suffix | ||
oss:ObjectCreated:PutObject | source | zip | oss:ObjectCreated:* | source | zip | Gagal | oss:ObjectCreated:* merupakan superset dari semua jenis event ObjectCreated. Event oss:ObjectCreated:* pada pemicu baru cocok dengan event oss:ObjectCreated:PutObject pada pemicu yang ada yang memiliki file prefix dan suffix yang sama. |
source1 | zip1 | Berhasil | Jenis event dan File prefix pada pemicu baru cocok dengan pemicu yang ada, tetapi File suffix-nya tidak cocok. | ||||
oss:ObjectCreated:PutObject | source | zip | Gagal | Jenis event, File prefix, dan File suffix pada pemicu baru semuanya cocok dengan pemicu yang ada. | |||
source | 1zip | Gagal | |||||
source1 | zip | Gagal | |||||
source | None | Gagal | Jenis event dan File prefix pada pemicu baru cocok dengan pemicu yang ada. Jika File suffix tidak diatur, maka mencakup objek dengan suffix zip. Artinya, File suffix juga cocok. | ||||
None | zip | Tidak | Jenis event dan File suffix pada pemicu baru cocok dengan pemicu yang ada. Jika File prefix tidak diatur, maka mencakup objek dengan prefix source. Artinya, File prefix juga cocok. | ||||
source1 | zip1 | Berhasil | Jenis event dan File prefix pada pemicu baru cocok dengan pemicu yang ada, tetapi File suffix tidak cocok. | ||||
1source | 1zip | Berhasil | Jenis event dan File suffix pada pemicu baru cocok dengan pemicu yang ada, tetapi File prefix tidak cocok. | ||||
oss:ObjectCreated:PostObject | source | zip | Berhasil | Jenis event pada pemicu baru tidak cocok dengan pemicu yang ada. | |||
Prefix file dicocokkan dari awal nama objek, sedangkan suffix file dicocokkan dari akhir.
Bagian berikut menjelaskan dua jenis konflik. Pemicu baru tidak dapat dibuat jika kedua jenis konflik tersebut terjadi sekaligus. Namun, pemicu baru dapat dibuat jika hanya satu jenis konflik terjadi atau tidak ada konflik sama sekali.
Konflik jenis event
Jenis event pemicu yang ada | Jenis event pemicu baru | Deskripsi konflik |
|
|
|
|
|
Konflik pencocokan path
Path pemicu yang ada | Path pemicu baru | Deskripsi konflik |
|
| Prefix tidak cocok, suffix cocok. Tidak ada konflik path. |
|
| Prefix cocok, suffix tidak cocok. Tidak ada konflik path. |
|
| Prefix cocok, suffix cocok. Konflik path. |
Jika Anda ingin menggunakan jenis event OSS yang sama untuk memicu fungsi berbeda guna menangani tugas pemrosesan berbeda, Anda dapat membuat pemicu OSS berbasis EventBridge.
FAQ
Referensi
Konfigurasi pemicu
Untuk informasi selengkapnya tentang cara mengonfigurasi dan menggunakan pemicu OSS native serta pemicu OSS berbasis EventBridge, lihat Konfigurasi pemicu OSS native dan Konfigurasi pemicu OSS berbasis EventBridge.
Pertanyaan tentang pemicu
Jika Anda ingin memeriksa event mana yang mengeksekusi fungsi, Anda dapat mencetak log jenis event dari logika kode Anda. Untuk informasi selengkapnya, lihat Catatan log.
Jika Anda ingin memanggil fungsi lain dari dalam suatu fungsi, Anda dapat menggunakan API untuk memanggil fungsi tersebut. Untuk informasi selengkapnya, lihat Apakah fungsi dapat saling memanggil?