Panduan ini ditujukan bagi pengguna fitur Notifikasi perubahan objek Cloud Storage yang tidak digunakan lagi. Notifikasi Pub/Sub untuk Cloud Storage adalah alat yang direkomendasikan untuk menghasilkan notifikasi yang melacak perubahan pada objek di bucket Cloud Storage Anda. Notifikasi Pub/Sub menawarkan kecepatan, fleksibilitas, penyiapan, dan efisiensi biaya yang lebih baik. Panduan ini menjelaskan perbedaan antara Notifikasi perubahan objek dan notifikasi Pub/Sub untuk Cloud Storage serta memberikan langkah-langkah migrasi dari Notifikasi perubahan objek ke notifikasi Pub/Sub.
Ringkasan Notifikasi perubahan objek
Notifikasi perubahan objek adalah mekanisme lama di Cloud Storage untuk
memberi tahu aplikasi tentang perubahan pada objek dalam bucket. Saat
Notifikasi perubahan objek disiapkan, Cloud Storage akan mengirimkan permintaan HTTP POST (webhook) ke URL aplikasi yang ditentukan setiap kali objek ditambahkan, diperbarui, atau dihapus. Notifikasi perubahan objek dibuat dengan mengirimkan permintaan watchAll
ke Cloud Storage, menggunakan JSON API, library klien, atau perintah watchbucket
notifikasi gsutil. Tidak ada mekanisme pull
, dan Anda harus memiliki nama domain yang dapat diakses secara publik yang didukung oleh server HTTP untuk menerima pesan webhook. Sebaiknya gunakan notifikasi Pub/Sub untuk Cloud Storage untuk penerapan baru karena keandalan, skalabilitas, dan fleksibilitasnya.
Untuk informasi yang lebih mendetail, lihat Notifikasi perubahan objek.
Ringkasan notifikasi Pub/Sub
Notifikasi Pub/Sub untuk Cloud Storage menyediakan cara modern, skalabel, dan andal untuk memicu tindakan sebagai respons terhadap perubahan di bucket Cloud Storage Anda dengan mengirimkan informasi peristiwa ke topik Pub/Sub. Pub/Sub menawarkan pengiriman pesan berbasis push sebagai permintaan POST HTTP ke webhook. Saat objek dibuat, diperbarui, atau dihapus, Cloud Storage memublikasikan pesan yang berisi metadata objek ke topik Pub/Sub tertentu, yang kemudian dapat digunakan oleh berbagai pelanggan seperti fungsi Cloud Run, pipeline data, atau microservice, sehingga memungkinkan arsitektur yang fleksibel dan berbasis peristiwa dengan pengiriman minimal satu kali dan fitur penanganan error yang andal.
Untuk mengetahui informasi yang lebih mendetail, lihat Notifikasi Pub/Sub untuk Cloud Storage.
Membandingkan Notifikasi perubahan objek dengan notifikasi Pub/Sub
Tabel berikut membandingkan fitur Notifikasi perubahan objek dengan fitur notifikasi Pub/Sub:
Fitur | Notifikasi perubahan objek | Notifikasi Pub/Sub |
---|---|---|
Tujuan | Memberi tahu aplikasi secara langsung melalui permintaan HTTP POST (webhook) saat objek dalam bucket berubah. | Mengirim informasi tentang perubahan pada objek di bucket Cloud Storage ke topik Pub/Sub. |
Mekanisme penayangan | HTTP POST langsung (webhook) ke URL aplikasi yang ditentukan. | Pesan yang dipublikasikan ke topik Pub/Sub kemudian dapat digunakan oleh berbagai pelanggan seperti fungsi Cloud Run, aplikasi lain, dan pipeline data. |
Keandalan | Mencoba pengiriman yang andal, tetapi ketepatan waktu tidak dijamin. Notifikasi dapat tertunda tanpa batas waktu. | Menawarkan pengiriman minimal satu kali, yang berarti pesan mungkin dikirim beberapa kali, tetapi tidak hilang. Pub/Sub menangani persistensi dan percobaan ulang pesan. |
Skalabilitas | Kurang dapat diskalakan, karena mengandalkan webhook langsung yang perlu ditangani aplikasi Anda. | Sangat skalabel dan dirancang untuk pemrosesan acara berskala besar. |
Fleksibilitas | Terbatas untuk integrasi webhook langsung. | Sangat fleksibel. Pesan Pub/Sub dapat memicu fungsi Cloud Run, masuk ke pipeline data (Dataflow), dan digunakan oleh microservice lainnya. |
Pemfilteran | Tidak ada | Opsi pemfilteran yang andal tersedia di tingkat langganan Pub/Sub, sehingga pelanggan hanya menerima pesan yang memenuhi kriteria tertentu. |
Keamanan | Memerlukan endpoint aplikasi Anda agar dapat diakses secara publik (HTTPS). | Pub/Sub menawarkan IAM untuk kontrol akses terperinci ke topik dan langganan. Pub/Sub membantu pengiriman pesan yang aman, baik Anda menarik notifikasi secara langsung atau mengirimkannya ke endpoint publik. |
Kompleksitas | Dapat lebih mudah disiapkan untuk kasus penggunaan dasar, tetapi mengelola pengiriman yang andal dan penskalaan dapat menjadi rumit. | Memerlukan pemahaman tentang konsep Pub/Sub (topik, langganan), tetapi menawarkan solusi yang lebih andal dan mudah dikelola untuk arsitektur berbasis peristiwa. |
Status penghentian penggunaan | Tidak digunakan lagi. Sebaiknya gunakan notifikasi Pub/Sub untuk penerapan baru. | Aktif. Ini adalah metode utama dan yang dikembangkan secara aktif untuk notifikasi Cloud Storage. |
Penggunaan yang direkomendasikan | Tidak direkomendasikan untuk project baru. Terutama untuk integrasi lama yang tidak terlalu rumit yang tidak dapat Anda migrasikan. | Sangat direkomendasikan untuk membangun arsitektur berbasis peristiwa yang tangguh dan skalabel yang bereaksi terhadap perubahan Cloud Storage. |
Mengapa harus bermigrasi ke notifikasi Pub/Sub?
Memigrasikan dari Notifikasi perubahan objek lama ke Pub/Sub untuk notifikasi Cloud Storage adalah langkah penting untuk pengelolaan peristiwa yang andal. Pub/Sub direkomendasikan untuk arsitektur berbasis peristiwa dalam Google Cloud, yang menawarkan keunggulan teknis dan operasional yang signifikan dibandingkan Notifikasi perubahan objek.
Berikut adalah keuntungan melakukan migrasi ke notifikasi Pub/Sub:
- Pengiriman yang andal: Pub/Sub mengirimkan setiap pesan yang dipublikasikan setidaknya satu kali untuk setiap langganan, memvalidasi bahwa peristiwa mencapai konsumen Anda. Pengiriman yang andal meminimalkan kehilangan data dan meningkatkan keandalan alur kerja Anda dibandingkan dengan model pengiriman notifikasi perubahan Objek yang kurang andal.
- Skalabilitas: Dirancang untuk throughput tinggi, notifikasi Pub/Sub dapat menangani volume peristiwa yang besar secara otomatis. Dengan menggunakan notifikasi Pub/Sub, Anda dapat menghilangkan hambatan performa yang mungkin Anda temui dengan Notifikasi perubahan objek saat frekuensi data atau peristiwa Anda meningkat.
- Integrasi dengan layanan Google Cloud : Pub/Sub terintegrasi secara lancar dengan beberapa layanan Google Cloud , sehingga memberikan fleksibilitas untuk membangun alur kerja otomatis menggunakan fungsi Cloud Run, Cloud Run, Dataflow, dan kemampuan pengamatan yang ditingkatkan melalui Cloud Logging dan Cloud Monitoring.
- Kontrol terperinci: Dengan Pub/Sub, Anda dapat memfilter pesan di tingkat langganan. Hal ini memungkinkan konsumen hanya menerima peristiwa yang relevan, sehingga mengurangi pemrosesan dan traffic jaringan yang tidak perlu.
- Dukungan platform: Notifikasi Pub/Sub adalah layanan pesan yang didukung. Migrasi membantu Anda menggunakan teknologi yang menerima peningkatan berkelanjutan, update keamanan, dan dokumentasi yang komprehensif, tidak seperti Notifikasi perubahan objek yang tidak digunakan lagi.
Langkah-langkah migrasi
Notifikasi perubahan objek dan notifikasi Pub/Sub untuk Cloud Storage terkadang dapat mengirim pesan duplikat. Oleh karena itu, kode penggunaan Anda harus dirancang untuk menangani pesan duplikat dengan aman.
Untuk bermigrasi dari Notifikasi perubahan objek ke notifikasi Pub/Sub, ikuti langkah-langkah berikut:
Mulai gunakan notifikasi Pub/Sub untuk Cloud Storage selain penyiapan Notifikasi perubahan objek yang ada. Untuk informasi tentang cara mengonfigurasi notifikasi Pub/Sub, lihat Mengonfigurasi notifikasi Pub/Sub untuk Cloud Storage.
Uji dan verifikasi bahwa alur kerja pemrosesan notifikasi Pub/Sub aplikasi Anda berfungsi dengan benar. Untuk mengetahui informasi tentang cara memantau langganan Pub/Sub, lihat Memantau langganan dalam Pub/Sub.
Berhenti memproses pesan yang diterima dari channel Notifikasi perubahan objek. Untuk menghentikan saluran notifikasi, buat permintaan stop.
Pertimbangan untuk langganan push Pub/Sub
Meskipun langganan pull Pub/Sub menawarkan fleksibilitas dan kontrol yang lebih baik, langganan push Pub/Sub sangat mirip dengan pesan notifikasi perubahan Objek. Akibatnya, langganan push menjadi jalur migrasi yang lebih cepat bagi pengguna Notifikasi perubahan objek yang sudah ada. Untuk perbandingan mendetail antara langganan push dan pull, lihat Memilih jenis langganan.
Jika Anda berencana menggunakan langganan push dan berencana menggunakan kembali kode penanganan notifikasi yang ada, Anda harus mempertimbangkan perbedaan antara format permintaan push notifikasi perubahan Objek dan notifikasi Pub/Sub serta interpretasi kode respons. Perbedaannya dijelaskan di bagian berikut.
Format permintaan push
Bagian ini menjelaskan perbedaan format permintaan push antara Notifikasi perubahan objek dan Notifikasi Pub/Sub.
Notifikasi perubahan objek: Notifikasi perubahan objek dikirimkan sebagai permintaan POST HTTP ke URL aplikasi Anda, dalam format berikut:
POST /ApplicationUrlPath Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost X-Goog-Channel-Id: ChannelId X-Goog-Channel-Token: ClientToken X-Goog-Resource-Id: ResourceId X-Goog-Resource-State: ResourceState X-Goog-Resource-Uri: https://storage.googleapis.com/storage/v1/b/BucketName/o?alt=json { "kind": "storage#object", "id": "BucketName/ObjectName", "selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName", "name": "ObjectName", "bucket": "BucketName", "generation": "1367014943964000", "metageneration": "1", "contentType": "application/octet-stream", "updated": "2013-04-26T22:22:23.832Z", "size": "10", "md5Hash": "xHZY0QLVuYng2gnOQD90Yw==", "mediaLink": "https://content-storage.googleapis.com/storage/v1/b/BucketName/o/ObjectName?generation=1367014943964000&alt=media", "owner": { "entity": "user-jeffersonloveshiking@gmail.com" }, "crc32c": "C7+82w==", "etag": "COD2jMGv6bYCEAE=" }
Notifikasi Pub/Sub: Notifikasi Pub/Sub, jika dikonfigurasi untuk pengiriman push, akan dikirimkan sebagai permintaan HTTP POST. Kolom
data
berisi payload peristiwa Cloud Storage yang dienkode dengan base64. Saat kolom data didekode, kolom tersebut cocok dengan isi pesan notifikasi perubahan Objek.POST /YourSpecifiedURL Accept: * / * Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost { "deliveryAttempt": 5, "message": {"attributes": {"notificationConfig":"projects/_/buckets/foo/notificationConfigs/3", "eventType": "OBJECT_FINALIZE", "payloadFormat": "JSON_API_V1", "bucketId": "foo", "objectId": "bar", "objectGeneration": 123456, "eventTime": "2021-01-15T01:30:15.01Z" }, "data": "ewogImtpbm", "messageId": "2070443601311540", "message_id": "2070443601311540", "orderingKey": "key", "publishTime": "2021-02-26T19:13:55.749Z", "publish_time": "2021-02-26T19:13:55.749Z" }, "subscription": "projects/myproject/subscriptions/mysubscription" }
Response code
Tabel berikut menjelaskan perbedaan interpretasi kode respons antara Notifikasi perubahan objek dan Notifikasi Pub/Sub:
Fitur | Response code | Penafsiran | Tindakan |
---|---|---|---|
Notifikasi perubahan objek | |||
102 , 200 , 201 , 202 , 204
|
Berhasil | Pesan diproses | |
500 , 502 , 503 , 504
|
Gagal diproses | Coba lagi nanti | |
Waktu tunggu habis, koneksi gagal, tidak ada respons | Gagal diproses | Coba lagi nanti | |
Kode HTTP lainnya. Contoh, 404
|
Kegagalan permanen | Jangan coba lagi pesan | |
Notifikasi Pub/Sub | |||
102 , 200 , 201 , 202 , 204
|
Berhasil | Pesan dikonfirmasi | |
Semua kode respons lainnya, waktu tunggu, dan kegagalan koneksi | Gagal | Coba lagi nanti |
Langkah berikutnya
- Konfigurasikan notifikasi Pub/Sub untuk Cloud Storage.
- Pelajari Pub/Sub lebih lanjut.
- Berlangganan bucket untuk menerima notifikasi yang dikirim ke Pub/Sub.