Simple Message Queue (SMQ, sebelumnya MNS) mengirimkan notifikasi ketika operasi tertentu terjadi pada resource Object Storage Service (OSS) Anda. Siapkan aturan notifikasi event untuk mengarahkan notifikasi tersebut ke sebuah queue guna pemrosesan lanjutan.
Cara kerja
Setelah Anda membuat aturan notifikasi event, SMQ memantau resource OSS yang ditentukan untuk mendeteksi event yang sesuai. Ketika suatu event terjadi, SMQ mendorong notifikasi ke penerima yang telah Anda konfigurasikan, seperti sebuah queue.
OSS menambahkan header respons x-oss-process-status pada permintaan yang sesuai dengan aturan notifikasi event. Header ini tetap disertakan terlepas dari keberhasilan pengiriman notifikasi dan tidak memengaruhi respons terhadap permintaan asli. Permintaan yang tidak sesuai dengan aturan apa pun tidak menyertakan header ini.
Nilai header tersebut dienkripsi dalam format Base64. Setelah didekode, muatan JSON berisi bidang-bidang berikut:
{
"code": "Success",
"message": "NotificationSucceed",
"type": "EventNotification",
"version": "1.0"
}Field | Description |
| Apakah notifikasi berhasil dibuat. Nilai |
| Deskripsi hasil. Jika gagal, bidang ini berisi penyebab kegagalan. |
| Jenis operasi. Selalu bernilai |
| Versi protokol. |
Untuk informasi lebih lanjut tentang pengiriman pesan, lihat Queue.
Kasus penggunaan
Lacak operasi pada bucket bersama — Dapatkan notifikasi ketika pengguna yang berwenang mengunggah, menghapus, atau memodifikasi objek di bucket Anda.
Analisis pola akses — Kumpulkan notifikasi untuk mengukur frekuensi operasi, mengidentifikasi tren, atau mengirimkan data ke layanan analitik seperti E-MapReduce (EMR).
Pantau laju permintaan — Lacak QPS untuk operasi pada resource OSS Anda.
Catatan penggunaan
Aturan notifikasi event baru memerlukan waktu sekitar 10 menit untuk mulai berlaku.
SMQ secara otomatis membuat topik untuk setiap aturan notifikasi event. Topik tersebut dapat dikenai biaya. Untuk detailnya, lihat Ikhtisar penagihan.
Aturan notifikasi event dapat dibuat atau dihapus, tetapi tidak dapat dimodifikasi. Untuk memperbarui aturan, hapus aturan lama dan buat yang baru.
Jenis event yang didukung
Event dikelompokkan berdasarkan kategori. Gunakan akhiran wildcard :* untuk mencocokkan semua event dalam suatu kategori, termasuk jenis event baru yang mungkin ditambahkan ke kategori tersebut di masa depan.
Event pembuatan objek
Event type | Trigger |
ObjectCreated:PutObject | PutObject mengunggah objek. |
ObjectCreated:PostObject | PostObject mengunggah objek melalui formulir HTML. |
ObjectCreated:CopyObject | CopyObject menyalin objek dalam atau antar bucket. |
ObjectCreated:AppendObject | AppendObject menambahkan data ke objek yang sudah ada. |
ObjectCreated:InitiateMultipartUpload | InitiateMultipartUpload memulai tugas unggah multi-bagian. |
ObjectCreated:UploadPart | UploadPart mengunggah bagian dalam proses unggah multi-bagian. |
ObjectCreated:UploadPartCopy | UploadPartCopy menyalin data sebagai bagian dalam proses unggah multi-bagian. |
ObjectCreated:CompleteMultipartUpload | CompleteMultipartUpload menyelesaikan proses unggah multi-bagian. |
ObjectCreated:PutSymlink | PutSymlink membuat tautan simbolik ke objek tujuan. |
ObjectCreated:* | Mencocokkan semua event pembuatan objek, termasuk jenis event mendatang yang diawali dengan |
Event pengunduhan objek
Event type | Trigger |
ObjectDownloaded:GetObject | GetObject mengunduh objek. |
Event modifikasi objek
Event type | Trigger |
ObjectModified:UpdateObjectMeta | UpdateObjectMeta memperbarui metadata objek. |
ObjectModified:ChangeStorageClass | Aturan lifecycle mengubah kelas penyimpanan objek. |
ObjectModified:* | Mencocokkan semua event modifikasi objek, termasuk jenis event mendatang yang diawali dengan |
Event penghapusan objek
Event type | Trigger |
ObjectRemoved:DeleteObject | DeleteObject menghapus objek. |
ObjectRemoved:DeleteObjects | DeleteMultipleObjects menghapus beberapa objek dalam satu permintaan. |
ObjectRemoved:AbortMultipartUpload | AbortMultipartUpload membatalkan unggah multi-bagian dan menghapus bagian-bagian yang telah diunggah. |
ObjectRemoved:* | Mencocokkan semua event penghapusan objek, termasuk jenis event mendatang yang diawali dengan |
Event replikasi data
Event type | Trigger |
ObjectReplication:ObjectCreated | Objek dibuat selama tugas replikasi data. |
ObjectReplication:ObjectRemoved | Objek dihapus selama tugas replikasi data. |
ObjectReplication:ObjectModified | Objek ditimpa selama tugas replikasi data. |
ObjectReplication:* | Mencocokkan semua event replikasi data, termasuk jenis event mendatang yang diawali dengan |
Event pemulihan objek
Event type | Trigger |
ObjectRestore:FinishRestore | Pemulihan objek Cold Archive atau Deep Cold Archive selesai. Jenis event ini hanya berlaku untuk objek Cold Archive dan Deep Cold Archive. |
Format pesan notifikasi event
Isi pesan dienkripsi dalam format Base64. Muatan setelah didekode berupa objek JSON dengan struktur berikut:
{
"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"
}
}
]
}Bidang pesan
Field | Description |
eventName | Jenis event yang memicu notifikasi. |
eventSource | Sumber event. Nilainya adalah |
eventTime | Waktu terjadinya event, dalam format ISO 8601. |
eventVersion | Versi protokol event. |
oss | Detail event OSS. |
oss.bucket.arn | Nama Sumber Daya Alibaba Cloud (ARN) bucket. |
oss.bucket.name | Nama bucket. |
oss.bucket.ownerIdentity | ID pengguna yang membuat bucket. |
oss.object.deltaSize | Perubahan ukuran objek, dalam byte. |
oss.object.eTag | ETag objek. Untuk objek yang diunggah dengan PutObject, ini adalah hash MD5 dari kontennya. Untuk objek yang dibuat melalui metode lain, ini adalah nilai unik yang dihasilkan oleh algoritma internal. Bandingkan ETag untuk memeriksa apakah konten objek telah berubah. |
oss.object.key | Nama objek. |
oss.object.readFrom | Posisi byte awal pembacaan objek. |
oss.object.readTo | Posisi byte akhir pembacaan objek. |
oss.object.size | Ukuran objek, dalam byte. |
oss.ossSchemaVersion | Versi skema OSS. |
oss.ruleId | ID aturan notifikasi event yang sesuai dengan event ini. |
region | Wilayah tempat bucket berada. |
requestParameters.sourceIPAddress | Alamat IP sumber permintaan. |
responseElements.requestId | ID permintaan. |
userIdentity.principalId | ID unik (UID) pihak yang melakukan permintaan. |
xVars | Parameter kustom yang ditentukan dalam konfigurasi callback OSS. |
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Akun Alibaba Cloud dengan SMQ dan OSS yang telah diaktifkan
(Opsional) Sebuah queue untuk menerima notifikasi. Jika belum memiliki, buat di Langkah 1
(Opsional) Bucket OSS di wilayah yang sama dengan queue. Jika belum memiliki, buat di Langkah 2
Prosedur
Langkah 1: (Opsional) Buat queue
Lewati langkah ini jika Anda sudah memiliki queue untuk menerima notifikasi event. Anda juga dapat membuat subscription setelah aturan notifikasi event dibuat.
Masuk ke Konsol SMQ.
Di panel navigasi sebelah kiri, pilih Queue Model > Queues.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Queues, klik Create Queue.
Pada panel Create Queue, konfigurasikan parameter berikut dan klik OK. Queue baru akan muncul di halaman Queues.
Parameter
Description
Name
Nama queue.
Maximum Message Length
Ukuran maksimum pesan tunggal yang dikirim ke queue.
Long Polling Period
Durasi maksimum permintaan long polling ditahan setelah operasi ReceiveMessage dipanggil.
Visibility Timeout Period
Durasi pesan berada dalam status Inactive setelah diterima dari queue.
Message Retention Period
Waktu maksimum pesan disimpan di queue. Setelah periode ini, pesan akan dihapus terlepas dari apakah telah diterima atau belum.
Message Delay Period
Periode setelah semua pesan yang dikirim ke queue dapat dikonsumsi.
Enable Logging Feature
Apakah pencatatan log operasi pesan diaktifkan.
Langkah 2: (Opsional) Buat bucket
Lewati langkah ini jika Anda sudah memiliki bucket di wilayah yang sama dengan queue.
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets.
Pada halaman Buckets, klik Create Bucket.
Pada panel Create Bucket, konfigurasikan parameter berikut dan klik Create:
Gunakan nilai default untuk semua parameter lainnya. Bucket dibuat dengan fitur Block Public Access aktif dan ACL diatur ke Private secara default. Pengaturan ini cukup untuk pengujian notifikasi event.
Parameter
Description
Bucket Name
Nama bucket. Contoh:
event-notification-test.Region
Harus berada di wilayah yang sama dengan queue.
Langkah 3: Buat aturan notifikasi event
Saat Anda membuat aturan notifikasi event, SMQ secara otomatis membuat topik dan subscription yang mengarahkan pesan dari topik ke penerima yang ditentukan.
Masuk ke Konsol SMQ.
Di panel navigasi sebelah kiri, klik Event Notifications.
Di bilah navigasi atas, pilih wilayah.
Pada tab OSS di halaman Event Notifications, klik Create Rule.
Pada panel Create Rule - OSS, konfigurasikan parameter berikut dan klik OK:
Parameter
Description
Name
Nama aturan.
Event Type
Satu atau beberapa jenis event yang akan dipantau. Lihat Jenis event yang didukung.
Match Mode
Pola filter untuk nama resource OSS. Lihat Detail mode pencocokan.
Receiving Terminal
Pilih Queue dan masukkan nama queue yang dibuat di Langkah 1.
Detail mode pencocokan
Nama resource OSS menggabungkan nama bucket dan objek yang dipisahkan oleh garis miring (/). Contohnya: movie/hello.avi.
Tersedia empat mode pencocokan. Dua mode pencocokan tidak boleh saling tumpang tindih.
Match mode | Example | What it matches |
Full Name |
| Hanya resource persis |
Prefix |
| Semua objek dengan awalan |
Prefix |
| Semua objek di bucket |
Prefix |
| Semua objek di bucket yang namanya diawali dengan |
Suffix |
| Semua objek dengan akhiran |
Prefix & Suffix | Prefix: | Semua objek |
Langkah 4: Unggah objek untuk memverifikasi aturan
Tunggu minimal 10 menit setelah membuat aturan sebelum mengunggah, karena aturan baru memerlukan waktu sekitar 10 menit untuk mulai berlaku.
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets.
Klik nama bucket target untuk membuka halaman Objects.
Klik Upload Object di atas daftar objek.
Konfigurasikan parameter unggah dan klik Upload Object. Untuk detailnya, lihat bagian Simple upload. Panel Task List menampilkan status unggah sebagai Uploaded.
Langkah 5: Terima notifikasi event
Masuk ke Konsol SMQ.
Di panel navigasi sebelah kiri, pilih Queue Model > Queues.
Di bilah navigasi atas, pilih wilayah yang sama dengan queue.
Pada halaman Queues, temukan queue tersebut dan klik Send Messages di kolom Actions.
Pada bagian Receive Message di halaman Quick Experience, klik Receive Message. Daftar pesan yang diterima akan muncul.
Temukan pesan tersebut dan klik Details di kolom Actions. Kotak dialog Message Details menampilkan isi notifikasi event.