Saat mengintegrasikan OSS dengan Function Compute, Anda dapat menggunakan event OSS untuk memicu fungsi guna melakukan pemrosesan data kustom. Topik ini menjelaskan batasan, jenis event, dan aturan pemicu untuk pemicu OSS di Function Compute.
Informasi latar belakang
OSS dan Function Compute terintegrasi secara mulus melalui pemicu OSS. Anda dapat menulis fungsi untuk menangani event OSS. Saat event tertentu terjadi di OSS, fungsi yang sesuai akan dipicu secara otomatis. Sebagai contoh, Anda dapat mengonfigurasi fungsi untuk menangani event PutObject. Ketika Anda memanggil operasi API PutObject OSS untuk mengunggah gambar ke bucket OSS, fungsi tersebut akan dipicu secara otomatis guna memproses gambar tersebut.
Setelah mengintegrasikan OSS dengan Function Compute, Anda dapat memanggil berbagai fungsi untuk memproses data gambar atau audio serta menulis hasilnya kembali ke berbagai layanan penyimpanan. Arsitektur ini memungkinkan Anda fokus pada logika fungsi, sementara sistem menangani volume data besar secara real time dengan keandalan tinggi dan paralelisme skala besar.
Batasan
Hanya pemicu OSS berbasis EventBridge yang mendukung konfigurasi beberapa object prefix dan object suffix.
Ekspresi reguler tidak didukung dalam object prefix dan object suffix baik pada pemicu OSS native maupun pemicu OSS berbasis EventBridge.
Hanya pemicu OSS berbasis EventBridge yang memungkinkan Anda mengaitkan lebih dari 10 pemicu OSS ke satu bucket.
Sebagai praktik terbaik, hindari mengaitkan lebih dari 10 pemicu ke satu bucket. Jika Anda memerlukan lebih banyak pemicu, buat bucket baru dan konfigurasikan pemicu untuk bucket tersebut.
Definisi event
Saat OSS menangkap event yang relevan, informasi event tersebut dikodekan ke dalam string JSON dan diteruskan ke fungsi penanganan event. Untuk informasi lebih lanjut mengenai format notifikasi event OSS, lihat dokumentasi yang ditautkan.
Tabel berikut mencantumkan definisi event OSS yang didukung. Setiap jenis event berkorespondensi dengan operasi API ObjectCreated, ObjectRemoved, atau ObjectModified. Pemanggilan sukses terhadap salah satu operasi API ini akan memicu fungsi satu kali.
Jenis peristiwa | Event Name | Deskripsi |
ObjectCreated | oss:ObjectCreated:PutObject | Dipicu dengan memanggil API PutObject untuk mengunggah objek. Untuk informasi selengkapnya, lihat PutObject. |
oss:ObjectCreated:PutSymlink | Dipicu dengan memanggil API PutSymlink untuk membuat tautan simbolik ke objek target di OSS. Anda dapat menggunakan tautan simbolik ini untuk mengakses objek target. Untuk informasi selengkapnya, lihat PutSymlink. | |
oss:ObjectCreated:PostObject | Dipicu dengan memanggil API PostObject untuk mengunggah objek ke bucket menggunakan formulir HTML. Untuk informasi selengkapnya, lihat PostObject. | |
oss:ObjectCreated:CopyObject | Dipicu dengan memanggil API CopyObject untuk menyalin objek di OSS. Untuk informasi selengkapnya, lihat CopyObject. | |
oss:ObjectCreated:InitiateMultipartUpload | Untuk mentransfer data menggunakan fitur MultipartUpload, Anda harus terlebih dahulu memanggil API InitiateMultipartUpload untuk menginisialisasi 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 ID unggah yang ditentukan. Untuk informasi selengkapnya, lihat UploadPart. | |
oss:ObjectCreated:UploadPartCopy | Operasi API 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 API CompleteMultipartUpload untuk menyelesaikan unggah multi-bagian. Untuk informasi selengkapnya, lihat CompleteMultipartUpload. | |
oss:ObjectCreated:AppendObject | Operasi API AppendObject dipanggil untuk mengunggah objek dengan menambahkan data. Untuk informasi selengkapnya, lihat AppendObject. | |
oss:ObjectCreated:* | Dipicu oleh pemanggilan sukses terhadap salah satu operasi API ObjectCreated di atas. | |
ObjectRemoved | oss:ObjectRemoved:DeleteObject | Dipicu dengan memanggil API DeleteObject untuk menghapus objek. Untuk informasi selengkapnya, lihat DeleteObject. |
oss:ObjectRemoved:DeleteObjects | Dipicu dengan memanggil API DeleteMultipleObjects untuk menghapus beberapa objek dalam satu permintaan. Untuk informasi selengkapnya, lihat DeleteMultipleObjects. | |
oss:ObjectRemoved:AbortMultipartUpload | Dipicu dengan memanggil API AbortMultipartUpload untuk membatalkan unggah multi-bagian. Untuk informasi selengkapnya, lihat AbortMultipartUpload. | |
ObjectModified | oss:ObjectModified:UpdateObjectMeta | Dipicu dengan memanggil API UpdateObjectMeta untuk memodifikasi metadata objek. Catatan Saat ini, 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 terjadi selama replikasi data. |
oss:ObjectReplication:ObjectModified | Operasi timpa yang terjadi selama replikasi data. | |
oss:ObjectReplication:ObjectRemoved | Operasi hapus yang terjadi selama replikasi data. |
Aturan pemicu
Hindari loop pemicu
Saat menggunakan pemicu OSS, berhati-hatilah agar tidak terjadi loop pemicu. Skenario umum adalah ketika pengunggahan objek ke bucket OSS memicu fungsi. Fungsi tersebut kemudian memproses objek dan menulis satu atau beberapa objek baru kembali ke bucket yang sama, yang pada gilirannya memicu fungsi lagi, sehingga menciptakan loop eksekusi.
Untuk mencegah biaya tidak perlu akibat loop pemicu, kami menyarankan Anda mengonfigurasi object prefix atau object suffix. Misalnya, Anda dapat mengatur object prefix untuk objek sumber menjadi src dan object prefix untuk objek yang telah diproses menjadi dst. Hal ini memastikan bahwa objek yang telah diproses tidak memicu fungsi lagi. Jika Anda tidak mengatur object prefix atau suffix, pemicu akan mencocokkan objek dengan prefix atau suffix apa pun. Untuk informasi selengkapnya, lihat Langkah 1: Buat pemicu OSS.
Aturan pemicu OSS native
Untuk mencegah satu event memicu beberapa pemicu dalam bucket yang sama, Function Compute memberlakukan aturan konfigurasi berikut untuk sebuah bucket:
Kombinasi antara event pemicu, object prefix, dan object suffix harus unik.
Anda hanya dapat membuat pemicu baru jika kombinasi
event pemicu + object prefix + object suffix-nya tidak bentrok dengan pemicu yang sudah ada.
Contoh berikut menjelaskan aturan konfigurasi untuk pemicu OSS native.
Pemicu yang ada | Pemicu baru | Status pembuatan | Deskripsi | ||||
Trigger Event | Object Prefix | Object Suffix | Trigger Event | Object Prefix | Object Suffix | ||
oss:ObjectCreated:PutObject | source | zip | oss:ObjectCreated:* | source | zip | Gagal | Gagal. Event wildcard pemicu baru ( |
source1 | zip1 | Berhasil | Pemicu baru dan pemicu yang ada memiliki jenis event yang bentrok, tetapi nilai Object Prefix dan Object Suffix-nya tidak cocok. | ||||
oss:ObjectCreated:PutObject | source | zip | Gagal | Pemicu baru dan pemicu yang ada memiliki jenis event, Object Prefix, dan Object Suffix yang sama. | |||
source | 1zip | Gagal | |||||
source1 | zip | Gagal | |||||
source | None | Gagal | Jika jenis event dan Object Prefix pemicu baru cocok dengan pemicu yang ada, dan Anda tidak menentukan Object Suffix, pemicu baru akan mencocokkan objek dengan suffix apa pun, seperti objek .zip. Dalam kasus ini, Object Suffix juga dianggap cocok. | ||||
None | zip | Gagal | Jenis event dan Object Suffix pemicu baru cocok dengan pemicu yang ada. Jika Object Prefix tidak diatur, pemicu mencakup objek dengan awalan 'source', yang berarti Object Prefix juga cocok. | ||||
source1 | zip1 | Berhasil | Jenis event dan Object Prefix pemicu baru cocok dengan pemicu yang ada, tetapi Object Suffix-nya tidak cocok. | ||||
1source | 1zip | Berhasil | Jenis event dan Object Suffix pemicu baru cocok dengan pemicu yang ada, tetapi Object Prefix-nya tidak cocok. | ||||
oss:ObjectCreated:PostObject | source | zip | Berhasil | Berhasil. Jenis event tidak bentrok, sehingga pemicu dapat dibuat terlepas dari filter path-nya. | |||
Object prefix dicocokkan dari awal nama objek, dan object suffix dicocokkan dari akhir nama objek.
Pemicu baru tidak dapat dibuat jika pengaturannya bentrok dengan pemicu yang sudah ada. Bentrok hanya terjadi jika jenis event dan filter path-nya (prefix dan suffix) pada pemicu baru tumpang tindih dengan pengaturan pemicu yang sudah ada.
Bentrok jenis event
Jenis event yang ada | Jenis event baru | Deskripsi bentrok |
|
|
|
|
|
Bentrok pencocokan path
Path yang ada | Jalur baru | Deskripsi bentrok |
|
| Prefix tidak cocok, tetapi suffix cocok. Path-path tersebut tidak bentrok. |
|
| Prefix cocok, tetapi suffix tidak cocok. Path-path tersebut tidak bentrok. |
|
| Prefix cocok, dan suffix cocok. Path-path tersebut bentrok. |
Jika Anda ingin satu jenis event OSS memicu fungsi berbeda untuk tugas pemrosesan berbeda, Anda dapat membuat pemicu OSS berbasis EventBridge.
FAQ
Dokumen terkait
Konfigurasi pemicu
Untuk detail mengenai konfigurasi dan penggunaan pemicu OSS native serta pemicu OSS berbasis EventBridge, lihat Konfigurasi pemicu OSS native dan Konfigurasi pemicu OSS berbasis EventBridge.
Topik terkait pemicu
Jika Anda ingin memeriksa event mana yang memicu fungsi, Anda dapat mencetak jenis event di log fungsi Anda. Untuk informasi selengkapnya, lihat Manajemen log.
Jika Anda ingin memanggil satu fungsi dari fungsi lain, Anda dapat menggunakan API untuk memanggil fungsi target. Untuk informasi selengkapnya, lihat Apakah fungsi dapat saling memanggil?.