Simple Message Queue (SMQ, sebelumnya MNS) memungkinkan Anda membuat aturan notifikasi peristiwa untuk mendorong notifikasi Object Storage Service (OSS) ke penerima tertentu. Topik ini menjelaskan informasi latar belakang, skenario, jenis peristiwa, format pesan, dan cara membuat aturan notifikasi peristiwa untuk mendorong notifikasi peristiwa OSS.
Informasi Latar Belakang
Setelah membuat aturan notifikasi peristiwa, ketika peristiwa dipicu pada sumber daya OSS tertentu, SMQ akan mendorong notifikasi peristiwa ke penerima tertentu, seperti yang ditunjukkan pada gambar berikut.
Ketika mengirim permintaan untuk memanggil operasi OSS, OSS menambahkan header ke respons jika aturan notifikasi peristiwa cocok. Header ini menunjukkan apakah notifikasi peristiwa dihasilkan tanpa memengaruhi respons terhadap permintaan asli. Jika tidak ada aturan notifikasi peristiwa yang cocok, tidak ada header yang ditambahkan. Jika aturan cocok, header tetap ditambahkan meskipun notifikasi peristiwa tidak dihasilkan. Format header:
x-oss-process-status: 'ewogICAgImNvZGUiOiAiU3VjY2VzcyIsCiAgICAibWVzc2FnZSI6ICJOb3RpZmljYXRpb25TdWNjZWVkIiwKICAgICJ0eXBlIjogIkV2ZW50Tm90aWZpY2F****'Kunci: x-oss-process-status.
Nilai: Nilainya dikodekan dalam Base64. Contoh nilai setelah didekode:
{ "code":"Success", // Menunjukkan apakah notifikasi peristiwa dihasilkan. Jika notifikasi peristiwa dihasilkan, nilai Success dikembalikan. Jika tidak, nilai Fail dikembalikan. Nilai Success menunjukkan bahwa OSS mengirim pesan ke topik MSQ tetapi tidak menunjukkan bahwa MSQ mendorong pesan dari topik ke titik akhir penerima. "message":"NotificationSucceed", // Deskripsi operasi. Jika tidak ada notifikasi peristiwa yang dihasilkan, penyebab kegagalan ditampilkan. "type":"EventNotification", // Jenis operasi. Jenis operasi notifikasi peristiwa adalah EventNotification. "version":"1.0" }
Untuk informasi lebih lanjut tentang cara mendorong notifikasi, lihat Antrian.
Skema
Jika memberi otorisasi kepada pengguna lain untuk melakukan operasi pada bucket OSS Anda dan ingin diberi tahu saat operasi tersebut terjadi, Anda dapat membuat aturan notifikasi peristiwa.
Anda dapat menganalisis data berdasarkan notifikasi peristiwa, melihat jumlah kali suatu operasi dilakukan dalam periode waktu tertentu, serta menganalisis tren perkembangan bisnis baru-baru ini. Notifikasi peristiwa juga dapat diimpor ke layanan lain untuk analisis, seperti E-MapReduce (EMR).
Anda dapat memantau metrik seperti QPS operasi yang dilakukan pada sumber daya OSS Anda berdasarkan notifikasi peristiwa.
Peristiwa
Peristiwa | Tipe | Deskripsi |
ObjectCreated (Membuat objek) | ObjectCreated:PutObject | Operasi PutObject dipanggil untuk mengunggah objek. Untuk informasi lebih lanjut, lihat PutObject. |
ObjectCreated:PostObject | Operasi PostObject dipanggil untuk mengunggah objek. Untuk informasi lebih lanjut, lihat PostObject. | |
ObjectCreated:CopyObject | Operasi CopyObject dipanggil untuk menyalin objek dalam satu bucket atau antar bucket. Untuk informasi lebih lanjut, lihat CopyObject. | |
ObjectCreated:AppendObject | Operasi AppendObject dipanggil untuk mengunggah objek dengan menambahkan objek ke objek yang sudah ada. Untuk informasi lebih lanjut, lihat AppendObject. | |
ObjectCreated:InitiateMultipartUpload | Operasi InitiateMultipartUpload dipanggil untuk memulai tugas unggah multipel di OSS. Untuk informasi lebih lanjut, lihat InitiateMultipartUpload. | |
ObjectCreated:UploadPart | Operasi UploadPart dipanggil untuk mengunggah data secara bertahap. Untuk informasi lebih lanjut, lihat UploadPart. | |
ObjectCreated:UploadPartCopy | Operasi UploadPartCopy dipanggil untuk menyalin data secara bertahap. Untuk informasi lebih lanjut, lihat UploadPartCopy. | |
ObjectCreated:CompleteMultipartUpload | Operasi CompleteMultipartUpload dipanggil untuk menyelesaikan tugas unggah multipel. Untuk informasi lebih lanjut, lihat CompleteMultipartUpload. | |
ObjectCreated:PutSymlink | Operasi PutSymlink dipanggil untuk membuat tautan simbolik yang menunjuk ke objek tujuan. Untuk informasi lebih lanjut, lihat PutSymlink. | |
ObjectCreated:* | Nama peristiwa dalam notifikasi bisa berupa peristiwa apa pun yang dimulai dengan Catatan Jenis peristiwa ini mencakup semua peristiwa baru yang dimulai dengan ObjectCreated. Sebagai contoh, jika nama peristiwa dalam notifikasi adalah ObjectCreated:test, Anda dapat mendorong peristiwa ke penerima tertentu. | |
ObjectDownloaded (Unduh objek) | ObjectDownloaded:GetObject | Operasi GetObject dipanggil untuk mendapatkan objek dengan melakukan unduhan sederhana. |
ObjectModified (Modifikasi objek) | ObjectModified:UpdateObjectMeta | Operasi UpdateObjectMeta dipanggil untuk memodifikasi atribut objek. |
ObjectModified:ChangeStorageClass | Operasi ChangeStorageClass dipanggil untuk memodifikasi tipe penyimpanan berdasarkan aturan siklus hidup. | |
ObjectModified:* | Nama peristiwa dalam notifikasi bisa berupa peristiwa apa pun yang dimulai dengan Catatan Jenis peristiwa ini mencakup semua peristiwa baru yang dimulai dengan ObjectModified. Sebagai contoh, jika nama peristiwa dalam notifikasi adalah ObjectModified:test, Anda dapat mendorong peristiwa ke penerima tertentu. | |
ObjectRemoved (Hapus objek) | ObjectRemoved:DeleteObject | Operasi DeleteObject dipanggil untuk menghapus objek. Untuk informasi lebih lanjut, lihat DeleteObject. |
ObjectRemoved:DeleteObjects | Operasi DeleteObjects dipanggil untuk menghapus beberapa objek. Untuk informasi lebih lanjut, lihat DeleteMultipleObjects. | |
ObjectRemoved:AbortMultipartUpload | Operasi AbortMultipartUpload dipanggil untuk membatalkan tugas unggah multipel dan menghapus bagian-bagian yang telah diunggah dalam tugas tersebut. Untuk informasi lebih lanjut, lihat AbortMultipartUpload. | |
ObjectRemoved:* | Nama peristiwa dalam notifikasi bisa berupa peristiwa apa pun yang dimulai dengan Catatan Jenis peristiwa ini mencakup semua peristiwa baru yang dimulai dengan ObjectRemoved. Sebagai contoh, jika nama peristiwa dalam notifikasi adalah ObjectRemoved:test, Anda dapat mendorong peristiwa ke penerima tertentu. | |
ObjectReplication (Salin objek) | ObjectReplication:ObjectCreated | Objek dibuat dalam tugas replikasi data. |
ObjectReplication:ObjectRemoved | Objek dihapus dalam tugas replikasi data. | |
ObjectReplication:ObjectModified | Objek ditimpa dalam tugas replikasi data. | |
ObjectReplication:* | Nama peristiwa dalam notifikasi bisa berupa peristiwa apa pun yang dimulai dengan Catatan Jenis peristiwa ini mencakup semua peristiwa baru yang dimulai dengan ObjectReplication. Sebagai contoh, jika nama peristiwa dalam notifikasi adalah ObjectReplication:test, Anda dapat mendorong peristiwa ke penerima tertentu. | |
ObjectRestore (Pulihkan objek) | ObjectRestore:FinishRestore | Operasi pemulihan objek selesai. Objek Penyimpanan Arsip Dingin dipulihkan sebelum dapat diakses. Tipe peristiwa ini hanya mendukung objek Penyimpanan Arsip Dingin dan Deep Cold Archive. |
Format Pesan
Konten pesan notifikasi peristiwa OSS dikodekan dalam Base64. Setelah didekode, konten berada dalam format JSON. Contoh kode berikut menunjukkan contoh konten pesan yang didekode.
{
"events":[
{
"eventName":"ObjectDownloaded:GetObject",
"eventSource":"acs:oss",
"eventTime":"2016-07-01T11:17:30.000Z",
"eventVersion":"1.0",
"oss":{
"bucket":{
"arn":"acs:oss:cn-shenzhen:123456789098****:event-notification-test-shenzhen",
"name":"event-notification-test-shenzhen",
"ownerIdentity":"123456789098****"
},
"object":{
"deltaSize":0,
"eTag":"0CC175B9C0F1B6A831C399E26977****",
"key":"test",
"readFrom":0,
"readTo":1,
"size":1
},
"ossSchemaVersion":"1.0",
"ruleId":"GetObjectRule"
},
"region":"cn-shenzhen",
"requestParameters":{
"sourceIPAddress":"140.205.XX.XX"
},
"responseElements":{
"requestId":"5776514AF09A9E654242****"
},
"userIdentity":{
"principalId":"123456789098****"
},
"xVars":{
"x:callback-var1":"value1",
"x:vallback-var2":"value2"
}
}
]
}Tabel berikut menjelaskan parameter dalam konten pesan.
Parameter | Deskripsi |
eventName | Tipe peristiwa. |
eventSource | Sumber peristiwa. |
eventTime | Waktu terjadinya peristiwa. |
eventVersion | Versi protokol peristiwa. |
oss | Konten peristiwa OSS. |
bucket | Detail bucket OSS. |
arn | Alibaba Cloud Resource Name (ARN) dari bucket. |
name | Nama bucket. |
ownerIdentity | ID pengguna yang membuat bucket. |
object | Detail objek. |
deltaSize | Perubahan ukuran objek. |
eTag | Konten objek. Jika objek dibuat menggunakan permintaan PutObject, entity tag (ETag) objek adalah hash MD5 dari konten objek. Jika objek dibuat menggunakan metode lain, ETag adalah nilai unik yang dihasilkan berdasarkan algoritma tertentu. ETag objek dapat digunakan untuk memeriksa apakah konten objek dimodifikasi. |
key | Nama objek. |
readFrom | Posisi di mana pembacaan objek dimulai. |
readTo | Posisi di mana pembacaan objek berakhir. |
size | Ukuran objek. |
ossSchemaVersion | Versi skema OSS. |
ruleId | ID aturan yang cocok dengan peristiwa. |
region | Wilayah tempat bucket berada. |
requestParameters | Nilai parameter permintaan. |
sourceIPAddress | Alamat IP sumber permintaan. |
responseElements | Nilai parameter respons. |
requestId | ID permintaan. |
userIdentity | Informasi pengguna. |
principalId | ID unik (UID) dari peminta. |
xVars | Parameter kustom dalam callback OSS. |
Catatan Penggunaan
Diperlukan sekitar 10 menit agar aturan notifikasi peristiwa baru dapat berlaku.
Sistem secara otomatis membuat topik untuk aturan notifikasi peristiwa, dan Anda mungkin dikenakan biaya untuk topik tersebut. Untuk informasi lebih lanjut, lihat Gambaran Penagihan.
Anda dapat membuat atau menghapus aturan notifikasi peristiwa, namun tidak dapat memodifikasinya.
(Opsional) Langkah 1: Buat Antrian
Untuk berlangganan antrian guna menerima pesan dari klien hilir, Anda perlu membuat antrian. Anda juga dapat membuat langganan setelah aturan notifikasi peristiwa dibuat.
Masuk ke Konsol SMQ.
Di panel navigasi sisi kiri, pilih Queue Model > Queues.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Queues, klik Create Queue.
Di panel Create Queue, konfigurasikan parameter berikut dan klik OK:
Name: Nama antrian.
Maximum Message Length: Panjang maksimum pesan yang dikirim ke antrian.
Long Polling Period: Durasi maksimum permintaan polling panjang dipegang setelah operasi ReceiveMessage dipanggil.
Visibility Timeout Period: Durasi pesan tetap dalam keadaan Tidak Aktif setelah diterima dari antrian.
Message Retention Period: Durasi maksimum pesan ada di antrian. Setelah periode retensi yang ditentukan, pesan akan dihapus terlepas dari apakah telah diterima.
Message Delay Period: Periode setelah semua pesan yang dikirim ke antrian dikonsumsi.
Enable Logging Feature: Menentukan apakah fitur pencatatan diaktifkan.
Setelah antrian dibuat, antrian tersebut akan ditampilkan di halaman Queues.
(Opsional) Langkah 2: Buat Bucket
Jika bucket yang diinginkan sudah ada, lewati langkah ini.
Masuk ke Konsol OSS.
Di panel navigasi sisi kiri, klik Buckets.
Pada halaman Buckets, klik Create Bucket.
Di panel Create Bucket, konfigurasikan parameter berikut dan klik Create.
Nama Bucket: Nama bucket. Dalam contoh ini, event-notification-test digunakan.
Wilayah: Wilayah tempat bucket berada. Wilayah ini harus sama dengan wilayah tempat antrian berada.
Batasi Akses Publik: Menentukan apakah akses publik dibatasi. Dalam contoh ini, fitur ini dinonaktifkan.
ACL: Menentukan izin pada bucket. Dalam contoh ini, Public Read/Write dipilih.
CatatanGunakan nilai default parameter lainnya.
Langkah 3: Buat Aturan Notifikasi Peristiwa
Setelah aturan notifikasi peristiwa dibuat, SMQ secara otomatis membuat topik untuk aturan tersebut dan membuat langganan ke topik dengan titik akhir tertentu. Anda dapat melihat dan mengelola topik dan langganan di konsol SMQ.
Masuk ke Konsol SMQ.
Di panel navigasi sisi kiri, klik Event Notifications.
Di bilah navigasi atas, pilih wilayah.
Pada tab OSS halaman Event Notifications, klik Create Rule.
Di panel Create Rule - OSS, konfigurasikan parameter berikut dan klik OK.
Name: Masukkan nama untuk aturan.
Event Type: Pilih satu atau beberapa tipe acara.
Match Mode: Konfigurasikan mode pencocokan untuk aturan.
CatatanMode pencocokan termasuk Nama Lengkap, Awalan, Akhiran, dan Awalan & Akhiran. Dua mode pencocokan tidak boleh memiliki irisan. Sumber daya OSS mencakup bucket dan objek. Nama mereka dipisahkan dengan garis miring (/). Contoh: movie/hello.avi.
Nama Lengkap: movie/hello.avi.
Awalan:
movie/hello menunjukkan semua objek dengan awalan hello di bucket movie.
movie/ menunjukkan semua objek di bucket movie.
mov menunjukkan semua objek di bucket dengan awalan mov.
Akhiran: avi menunjukkan semua objek dengan akhiran .avi di semua bucket.
Awalan & Akhiran: Kombinasi movie/ awalan dan .avi akhiran menunjukkan semua objek dengan akhiran .avi di bucket movie.
Receiving Terminal: Pilih Queue dari daftar drop-down dan masukkan nama antrian yang Anda buat di Langkah 1.
Langkah 4: Unggah Objek
Masuk ke Konsol OSS.
Di panel navigasi sisi kiri, klik Buckets.
Pada halaman Buckets, klik nama bucket OSS yang ingin Anda kelola untuk masuk ke halaman Object Management.
Klik Upload Object di atas daftar objek.
Pada halaman yang muncul, konfigurasikan parameter dan klik Upload Object. Untuk informasi lebih lanjut tentang parameter, lihat bagian Unggah Sederhana dari topik "Unggah Sederhana".
Panel Daftar Tugas muncul. Di tab Tugas Unggah, status objek ditampilkan sebagai Terunggah.
Langkah 5: Terima Pesan
Masuk ke Konsol SMQ.
Di panel navigasi sisi kiri, pilih Queue Model > Queues.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Queues, temukan antrian yang ingin Anda kelola dan pilih di kolom Action.
Di bagian Receive Message halaman Quick Experience, klik Receive Message.
Daftar pesan muncul di bagian Receive Message.
Dalam daftar pesan, temukan pesan yang ingin Anda lihat dan klik Details di kolom Actions. Di kotak dialog Message Details, lihat isi pesan.