Dokumen ini menjelaskan cara membuat langganan push. Anda dapat menggunakan Google Cloud konsol, Google Cloud CLI, library klien, atau Pub/Sub API untuk membuat langganan push.
Sebelum memulai
- Pelajari langganan.
- Pahami cara kerja langganan push.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat langganan push, minta administrator untuk memberi Anda peran IAM Pub/Sub Editor (roles/pubsub.editor) di project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat langganan push. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan push:
-
pubsub.subscriptions.createdi project -
pubsub.topics.attachSubscriptiondi topik
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Langganan lintas project
Jika Anda membuat langganan di satu project untuk topik di project lain, Anda harus memiliki izin pubsub.subscriptions.create di project tempat Anda membuat langganan, dan izin pubsub.topics.attachSubscription di topik.
Properti langganan push
Langganan push mendukung semua properti langganan umum. Bagian berikut menjelaskan properti yang khusus untuk langganan push.
Endpoint
URL endpoint (wajib). Alamat HTTPS yang dapat diakses secara publik. Server untuk endpoint push harus memiliki sertifikat SSL yang valid dan ditandatangani oleh certificate authority. Layanan Pub/Sub mengirimkan pesan ke endpoint push dari region yang sama Google Cloud dengan tempat layanan Pub/Sub menyimpan pesan. Layanan Pub/Sub mengirimkan pesan dari region yang sama Google Cloud sesuai upaya terbaik.
Jika pelanggan menggunakan firewall, mereka tidak dapat menerima permintaan push. Untuk menerima permintaan push, Anda harus menonaktifkan firewall dan memverifikasi Token Web JSON (JWT) yang digunakan dalam permintaan. Jika pelanggan memiliki firewall, Anda mungkin menerima error
403 permission denied.Pub/Sub tidak memerlukan bukti kepemilikan untuk domain URL langganan push. Jika domain Anda menerima permintaan POST yang tidak terduga dari Pub/Sub, Anda dapat melaporkan dugaan penyalahgunaan.
Autentikasi
Aktifkan autentikasi. Jika diaktifkan, pesan yang dikirim oleh Pub/Sub ke endpoint push akan menyertakan header otorisasi untuk memungkinkan endpoint mengautentikasi permintaan. Mekanisme autentikasi dan otorisasi otomatis tersedia untuk endpoint fungsi App Engine Standard dan Cloud Run yang dihosting di project yang sama dengan langganan.
Konfigurasi autentikasi untuk langganan push yang diautentikasi terdiri dari akun layanan yang dikelola pengguna, dan parameter audiens yang ditentukan dalam panggilan create, patch, atau ModifyPushConfig. Anda juga harus memberikan peran tertentu ke akun layanan, seperti yang dibahas di bagian berikutnya.
Audiens. String tunggal yang tidak peka huruf besar/kecil yang digunakan webhook untuk memvalidasi audiens yang dituju dari token tertentu ini.
Akun layanan. Pub/Sub otomatis membuat akun layanan untuk Anda dengan format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.
Prasyarat untuk mengaktifkan autentikasi
Akun layanan yang dikelola pengguna adalah akun layanan yang terkait dengan langganan push. Akun ini digunakan sebagai klaim email dari Token Web JSON (JWT) yang dibuat. Berikut adalah daftar persyaratan untuk akun layanan:
Akun layanan yang dikelola pengguna ini harus berada dalam project yang sama dengan langganan push.
Principal yang membuat atau mengubah langganan push harus memiliki izin
iam.serviceAccounts.actAsdi akun layanan yang dikelola pengguna agar dapat melampirkan akun layanan ke langganan push. Untuk mengetahui informasi selengkapnya, lihat Melampirkan akun layanan ke resource.Izin yang diperlukan: Akun layanan ini harus diberi izin
iam.serviceAccounts.getOpenIdToken(termasuk dalamroles/iam.serviceAccountTokenCreator) untuk memungkinkan Pub/Sub membuat token JWT bagi akun layanan yang ditentukan untuk mengautentikasi permintaan push.
Pembukaan payload
Opsi Enable payload unwrapping menghapus semua metadata pesan dari pesan Pub/Sub, kecuali data pesan. Dengan pembukaan payload, data pesan dikirim langsung sebagai isi HTTP.
Anda juga dapat Mengaktifkan opsi Write metadata. Opsi Write metadata menambahkan metadata pesan yang sebelumnya dihapus kembali ke header permintaan.
Mengirim ke alamat VPC pribadi
Pub/Sub beroperasi di luar jaringan VPC dan tidak dapat langsung mengirim pesan ke alamat VPC pribadi. Namun, Anda dapat menggunakan Eventarc untuk merutekan pesan ke layanan dalam VPC. Pub/Sub dapat mengirim pesan ke pemicu Eventarc, yang kemudian dapat meneruskannya ke layanan dalam VPC, seperti layanan Cloud Run atau eksekusi Workflows. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Eventarc.
Kontrol Layanan VPC
Untuk project yang dilindungi oleh Kontrol Layanan VPC, perhatikan batasan berikut untuk langganan push:
Anda hanya dapat membuat langganan push baru yang endpoint push-nya ditetapkan ke layanan Cloud Run dengan URL
run.appdefault atau eksekusi Workflows. Domain kustom tidak berfungsi.Saat merutekan peristiwa melalui Eventarc ke tujuan Workflows yang endpoint push-nya ditetapkan ke eksekusi Workflows, Anda hanya dapat membuat langganan push baru melalui Eventarc.
Anda tidak dapat memperbarui langganan push yang ada. Langganan push ini akan terus berfungsi, meskipun tidak dilindungi oleh Kontrol Layanan VPC.
Membuat langganan push
Contoh berikut menunjukkan cara membuat langganan dengan pengiriman push, menggunakan setelan default yang disediakan.
Secara default, langganan menggunakan pengiriman pull, kecuali jika Anda menetapkan konfigurasi push secara eksplisit, seperti yang ditunjukkan dalam contoh berikut.
Konsol
Untuk membuat langganan push, selesaikan langkah-langkah berikut:
- Di Google Cloud konsol, buka halaman Subscriptions.
- Klik Create subscription.
- Untuk kolom Subscription ID, masukkan nama.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan memberi nama topik atau langganan.
- Pilih atau buat topik dari menu drop-down. Langganan akan menerima pesan dari topik.
- Pilih Delivery type sebagai Push.
- Tentukan URL endpoint.
- Pertahankan semua nilai default lainnya.
- Klik Create.
Anda juga dapat membuat langganan dari bagian Topics. Pintasan ini berguna untuk mengaitkan topik dengan langganan.
- Di Google Cloud konsol, buka halaman Topics.
- Klik more_vert di samping topik yang akan dibuat langganannya.
- Dari menu konteks, pilih Create subscription.
- Masukkan Subscription ID.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan memberi nama topik atau langganan.
- Pilih Delivery type sebagai Push.
- Tentukan URL endpoint.
- Pertahankan semua nilai default lainnya.
- Klik Create.
gcloud
-
Di Google Cloud konsol, aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
-
Untuk membuat langganan push, jalankan perintah
gcloud pubsub subscriptions create.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Ganti kode berikut:
SUBSCRIPTION_ID: Nama atau ID langganan push baru Anda.TOPIC_ID: Nama atau ID topik Anda.- PUSH_ENDPOINT: URL yang akan digunakan sebagai endpoint untuk langganan ini.
Contohnya,
https://myproject.appspot.com/myhandler.
REST
Untuk membuat langganan push, gunakan
projects.subscriptions.create
metode:
Permintaan:
Permintaan tersebut harus diautentikasi dengan token akses di header Authorization. Untuk mendapatkan token akses untuk Kredensial Default Aplikasi saat ini: gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Isi permintaan:
{
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
// Only needed if you are using push delivery
"pushConfig": {
"pushEndpoint": "PUSH_ENDPOINT"
}
}Dengan:
https://myproject.appspot.com/myhandler.Respons:
{
"name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID",
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
"pushConfig": {
"pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler",
"attributes": {
"x-goog-version": "v1"
}
},
"ackDeadlineSeconds": 10,
"messageRetentionDuration": "604800s",
"expirationPolicy": {
"ttl": "2678400s"
}
}C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub C++.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub C#.
Go
Contoh berikut menggunakan library klien Pub/Sub Go versi utama (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Go.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Java API.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Node.js.
Node.ts
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Node.js.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP API.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Ruby
Contoh berikut menggunakan library klien Pub/Sub Ruby v3. Jika Anda masih menggunakan library v2, lihat panduan migrasi ke v3. Untuk melihat daftar contoh kode Ruby v2, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Memantau langganan push
Cloud Monitoring menyediakan sejumlah metrik untuk memantau langganan.
Untuk mengetahui daftar semua metrik yang tersedia terkait Pub/Sub dan deskripsinya, lihat dokumentasi Monitoring untuk Pub/Sub.
Anda juga dapat memantau langganan dari dalam Pub/Sub.
Langkah berikutnya
- Membuat atau mengubah langganan dengan
gcloudperintah. - Membuat atau mengubah langganan dengan REST API.