Gunakan notifikasi event untuk memproses perubahan file di OSS secara real-time guna sinkronisasi data, pemantauan perubahan, pemicu logika bisnis, atau pencatatan log. Anda dapat menetapkan aturan notifikasi event untuk memantau file tertentu dan menerima notifikasi terkait.
Prasyarat
Pastikan bahwa Simple Message Queue (SMQ) (sebelumnya MNS) telah diaktifkan. Untuk mengaktifkan SMQ, kunjungi halaman produk SMQ.
Catatan
Notifikasi event melibatkan panggilan antara OSS dan SMQ. Ketika operasi di OSS memicu aturan, OSS memanggil SMQ untuk mengirim pesan. Panggilan dari OSS ke SMQ ini bisa gagal. Untuk memeriksa apakah panggilan berhasil, periksa nilai `x-oss-event-status` dalam header respons. Nilai ini dikodekan Base64. Jika nilai yang didekode adalah `{"Result": "Ok"}`, panggilan ke SMQ berhasil. Jika tidak, panggilan gagal.
Fitur notifikasi event membebankan biaya untuk SMQ. Untuk informasi lebih lanjut tentang penagihan, lihat Ikhtisar Penagihan.
Untuk daftar Wilayah yang mendukung notifikasi event untuk bucket, lihat Wilayah yang Didukung.
Anda dapat mengonfigurasi maksimal 10 aturan notifikasi event per Wilayah. Jika bisnis Anda memerlukan lebih banyak aturan, hubungi Dukungan Teknis.
File TS dan M3U8 yang dihasilkan oleh pengambilan aliran RTMP tidak memicu aturan notifikasi event. Untuk informasi lebih lanjut tentang pengambilan aliran RTMP, lihat Operasi LiveChannel.
Cara kerjanya
Setelah Anda membuat aturan notifikasi event, ketika permintaan ke OSS memicu aturan tersebut, SMQ mengirimkan notifikasi. Notifikasi, yang berisi informasi tentang operasi, dikirim ke server HTTP atau antrian SMQ yang telah Anda konfigurasikan. Diagram berikut menunjukkan proses ini:
Jenis-jenis event
Jenis event `ObjectCreatedGroup`, `ObjectDownloadedGroup`, dan `ObjectRemovedGroup` didukung di wilayah berikut: Tiongkok (Hong Kong), AS (Silicon Valley), AS (Virginia), Jerman (Frankfurt), Singapura, dan Inggris (London).
Jenis event yang dikonfigurasikan | Deskripsi | Nama event yang dikembalikan dalam notifikasi |
PutObject | Membuat atau menimpa file menggunakan unggah sederhana. | ObjectCreated:PutObject |
PostObject | Membuat atau menimpa file menggunakan unggah formulir. | ObjectCreated:PostObject |
CopyObject | Membuat atau menimpa file dengan menyalin objek. | ObjectCreated:CopyObject |
InitiateMultipartUpload | Menginisialisasi tugas unggah multi-bagian. | ObjectCreated:InitiateMultipartUpload |
UploadPart | Membuat atau menimpa file dengan mengunggah bagian. | ObjectCreated:UploadPart |
UploadPartCopy | Membuat atau menimpa file dengan menyalin bagian. | ObjectCreated:UploadPartCopy |
CompleteMultipartUpload | Menyelesaikan unggah multi-bagian. | ObjectCreated:CompleteMultipartUpload |
AbortMultipartUpload | Membatalkan tugas unggah multi-bagian dan menghapus bagian-bagiannya. | ObjectRemoved:AbortMultipartUpload |
AppendObject | Membuat atau menambahkan file menggunakan unggah tambahan. | ObjectCreated:AppendObject |
GetObject | Mengambil file menggunakan unduhan sederhana. | ObjectDownloaded:GetObject |
DeleteObject | Menghapus satu objek. | ObjectRemoved:DeleteObject |
DeleteObjects | Menghapus beberapa objek. | ObjectRemoved:DeleteObjects |
ObjectReplication:ObjectCreated | Operasi tulis selama replikasi data. | ObjectReplication:ObjectCreated |
ObjectReplication:ObjectRemoved | Operasi hapus selama replikasi data. | ObjectReplication:ObjectRemoved |
ObjectReplication:ObjectModified | Operasi modifikasi selama replikasi data. | ObjectReplication:ObjectModified |
ObjectModified:ChangeStorageClass | Operasi transisi kelas penyimpanan yang dipicu oleh aturan siklus hidup, seperti transisi dari Standar ke Akses Jarang, Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive. | ObjectModified:ChangeStorageClass |
ObjectCreatedGroup | Semua operasi yang membuat atau menimpa file. | Nama event yang dikembalikan dalam notifikasi dapat berupa event apa pun yang dimulai dengan `ObjectCreated:`, tergantung pada metode unggah. Misalnya, jika Anda mengunggah file menggunakan unggah sederhana dengan SDK, nama event adalah `ObjectCreated:PutObject`. Jika Anda mengunggah file di Konsol OSS, nama event adalah `ObjectCreated:PostObject`. |
ObjectDownloadedGroup | Semua operasi yang mengambil file. | Nama event yang dikembalikan dalam notifikasi dapat berupa event apa pun yang dimulai dengan `ObjectDownloaded:`, tergantung pada metode unduhan. Misalnya, jika Anda mengambil file menggunakan unduhan sederhana, nama event adalah `ObjectDownloaded:GetObject`. |
ObjectRemovedGroup | Semua operasi yang menghapus file. | Nama event yang dikembalikan dalam notifikasi dapat berupa event apa pun yang dimulai dengan `ObjectRemoved:`, tergantung pada metode penghapusan. Misalnya, jika Anda menghapus satu objek, nama event adalah `ObjectRemoved:DeleteObject`. Jika Anda menghapus beberapa objek dalam batch, nama event adalah `ObjectRemoved:DeleteObjects`. |
FinishRestore | Menyelesaikan operasi pemulihan. Jenis event ini hanya didukung untuk objek Penyimpanan Arsip Dingin dan Deep Cold Archive. | ObjectRestore:FinishRestore |
Notifikasi pesan
Konten pesan notifikasi event OSS dikodekan Base64. Setelah didekode, kontennya dalam format JSON. Struktur konten pesan adalah sebagai berikut:
{"events": [
{
"eventName": "", // Jenis notifikasi event.
"eventSource": "", // Sumber notifikasi event. Nilainya tetap "acs:oss".
"eventTime": "", // Waktu event dalam format ISO 8601.
"eventVersion": "", // Versi notifikasi event. Versi saat ini adalah "1.0".
"oss": {
"bucket": {
"arn": "", // Pengenal unik bucket. Formatnya adalah "acs:oss:region:uid:bucketname".
"name": "", // Nama bucket tujuan.
"ownerIdentity": "" // Pemilik bucket.
},
"object": {
"deltaSize": "", // Perubahan ukuran objek. Misalnya, jika file ditambahkan, nilai ini adalah ukuran file. Jika file ditimpa, nilai ini adalah selisih antara ukuran file baru dan lama, sehingga bisa negatif.
"eTag": "", // ETag objek.
"key": "", // Nama objek.
"position": "", // Parameter ini hanya berlaku untuk event ObjectCreated:AppendObject. Ini menunjukkan posisi di mana operasi tambahan dimulai untuk permintaan ini. Posisi untuk permintaan AppendObject pertama dimulai dari byte 0.
"readFrom": "", // Parameter ini hanya berlaku untuk event ObjectDownloaded:GetObject. Ini menunjukkan posisi di mana pembacaan file dimulai. Untuk permintaan non-range, nilai ini adalah 0. Untuk permintaan range, nilai ini adalah byte awal permintaan.
"readTo": "", // Parameter ini hanya berlaku untuk event ObjectDownloaded:GetObject. Ini menunjukkan posisi di mana pembacaan file berakhir. Untuk permintaan non-range, nilai ini adalah ukuran file. Untuk permintaan range, nilai ini adalah byte akhir permintaan range ditambah 1.
"size": "" // Ukuran objek.
},
"ossSchemaVersion": "", // Versi bidang skema ini. Versi saat ini adalah "1.0".
"ruleId": "GetObject", // ID aturan yang cocok dengan event ini.
"region": "", // Wilayah tempat bucket berada.
"requestParameters": {
"sourceIPAddress": "" // Alamat IP sumber permintaan.
},
"responseElements": {
"requestId": "" // ID permintaan.
},
"userIdentity": {
"principalId": "" // UID peminta.
},
"xVars": { // Parameter kustom dalam fitur OSS Callback.
"x:callback-var1":"value1",
"x:vallback-var2":"value2"
}
}
}
]
}Contoh notifikasi pesan:
{"events": [
{
"eventName": "ObjectDownloaded:GetObject",
"eventSource": "acs:oss",
"eventTime": "2016-07-01T11:17:30.000Z",
"eventVersion": "1.0",
"oss": {
"bucket": {
"arn": "acs:oss:cn-shenzhen:114895646818****:event-notification-test-shenzhen",
"name": "event-notification-test-shenzhen",
"ownerIdentity": "114895646818****"},
"object": {
"deltaSize": 0,
"eTag": "0CC175B9C0F1B6468E1199E269772661",
"key": "test",
"readFrom": 0,
"readTo": 1,
"size": 1
},
"ossSchemaVersion": "1.0",
"ruleId": "GetObjectRule",
"region": "cn-shenzhen",
"requestParameters": {
"sourceIPAddress": "198.51.100.1"
},
"responseElements": {
"requestId": "5FF16B65F05BC932307A3C3C"
},
"userIdentity": {
"principalId": "114895646818****"
},
"xVars": {
"x:callback-var1":"value1",
"x:vallback-var2":"value2"
}
}
}
]
}Prosedur
Masuk ke Konsol OSS.
Di panel navigasi di sebelah kiri, klik Buckets. Di halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi di sebelah kiri, pilih Data Processing > Event Notification.
Di halaman Event Notification, klik Create Rule.
Di panel Create Rule, konfigurasikan parameter berikut:
Parameter
Deskripsi
Rule Name
Nama aturan notifikasi event.
Nama aturan harus unik di wilayah yang sama untuk akun yang sama. Nama harus dimulai dengan huruf dan dapat berisi huruf besar, huruf kecil, angka, dan tanda hubung (-). Panjangnya tidak boleh melebihi 85 karakter.
Event Type
Jenis event untuk objek tujuan. Misalnya, jika Anda ingin menerima notifikasi event ketika objek tujuan dibuat atau ditimpa oleh operasi salin, atur jenis event menjadi `CopyObject`.
Anda dapat mengonfigurasi satu aturan notifikasi event untuk objek tujuan dan menentukan beberapa jenis event dalam aturan tersebut. Anda juga dapat mengonfigurasi beberapa aturan notifikasi event untuk objek tujuan. Perhatikan hal berikut saat mengonfigurasi beberapa aturan:
Jika beberapa aturan berlaku untuk objek tujuan yang sama, jenis event tidak boleh sama. Misalnya, jika Aturan A dikonfigurasi dengan event `CopyObject` untuk prefix
images, Aturan B tidak dapat mencakup event `CopyObject` jika berlaku untuk objek apa pun dengan prefiximages.Jika beberapa aturan berlaku untuk objek tujuan yang berbeda, jenis event dapat sama atau berbeda. Misalnya, jika Aturan A dikonfigurasi dengan event `PutObject` untuk objek dengan prefix
imagesdan suffix.png, dan Aturan B berlaku untuk objek dengan prefixlogdan suffix.jpg, jenis event untuk Aturan B dapat berupa `PutObject` atau `DeleteObject`.
PentingSaat Anda menghapus objek dari bucket yang memiliki pengendalian versi tanpa menentukan ID versi, notifikasi event `DeleteObject` atau `DeleteObjects` tidak akan dipicu. Hal ini karena perilaku penghapusan default tidak menghapus versi objek apa pun. Sebagai gantinya, itu mengubah versi saat ini dari objek menjadi versi sebelumnya dan menambahkan penanda hapus.
Untuk informasi lebih lanjut tentang operasi objek yang sesuai dengan jenis event, lihat Jenis-jenis event.
Object Matching
Objek tujuan untuk memicu notifikasi event.
Cocokkan objek tujuan berdasarkan Full Name
Untuk mencocokkan objek tujuan bernama exampleobject.txt di direktori root bucket, masukkan exampleobject.txt.
Untuk mencocokkan objek tujuan bernama myphoto.jpg di direktori destdir bucket, masukkan destdir/myphoto.jpg.
Cocokkan objek tujuan berdasarkan Prefix/Suffix
Untuk mencocokkan semua objek di bucket, kosongkan awalan dan akhiran.
Untuk mencocokkan semua objek di direktori examplefolder bucket, atur awalan menjadi examplefolder/ dan kosongkan akhiran.
Untuk mencocokkan semua objek dengan ekstensi .jpg di bucket, kosongkan awalan dan atur akhiran menjadi .jpg.
Untuk mencocokkan semua objek dengan ekstensi .mp3 di direktori examplefolder bucket, atur awalan menjadi examplefolder/ dan akhiran menjadi .mp3.
Klik tombol Add Condition untuk membuat hingga lima aturan Resource Description object matching.
Subscription Endpoint
Titik akhir yang menerima event. Jenis langganan seperti HTTP dan Antrian didukung.
Klik OK.
Setelah Anda menyelesaikan langkah-langkah sebelumnya, aturan notifikasi event akan berlaku dalam waktu sekitar 10 menit.
FAQ
Mengapa notifikasi event tidak dipicu ketika saya menghapus file?
Referensi
Anda dapat menentukan objek untuk dimonitor dalam aturan notifikasi event. Ketika event tertentu terjadi pada objek-objek ini, Anda akan menerima notifikasi melalui titik akhir yang dikonfigurasikan di SMQ. Untuk informasi lebih lanjut, lihat Tutorial: Gunakan SMQ untuk mengimplementasikan notifikasi event OSS.
Jika Anda tidak dapat mengambil badan pesan melalui antarmuka HttpEndpoint, mungkin karena Anda menggunakan metode POST. Untuk solusi, lihat Apa yang harus saya lakukan jika saya tidak dapat menerima badan pesan ketika saya menggunakan PHP untuk menulis antarmuka HttpEndpoint di Simple Message Queue (sebelumnya MNS)?.
Anda juga dapat menggunakan fitur callback unggah OSS untuk mengimplementasikan callback unggah. Untuk informasi lebih lanjut, lihat Callback unggahan.