Dokumen ini menjelaskan cara membuat langganan push. Anda dapat menggunakan konsolTrusted Cloud , 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 membuat langganan, Anda harus mengonfigurasi kontrol akses di tingkat project. Anda juga memerlukan izin tingkat resource jika langganan dan topik Anda berada dalam project yang berbeda, seperti yang dibahas nanti di bagian ini.
Untuk mendapatkan izin yang diperlukan guna membuat langganan push,
minta administrator Anda 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, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan push:
-
Buat langganan:
pubsub.subscriptions.create
-
Menghapus langganan:
pubsub.subscriptions.delete
-
Mendapatkan langganan:
pubsub.subscriptions.get
-
Mencantumkan langganan:
pubsub.subscriptions.list
-
Memperbarui langganan:
pubsub.subscriptions.update
-
Melampirkan langganan ke topik:
pubsub.topics.attachSubscription
-
Dapatkan kebijakan IAM untuk langganan:
pubsub.subscriptions.getIamPolicy
-
Konfigurasi kebijakan IAM untuk langganan:
pubsub.subscriptions.setIamPolicy
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Jika Anda perlu membuat langganan push di satu project yang terkait dengan topik di project lain, minta administrator topik Anda untuk memberi Anda peran IAM Editor Pub/Sub (roles/pubsub.editor)
di topik tersebut.
Properti langganan push
Saat mengonfigurasi langganan push, Anda dapat menentukan properti berikut.
Properti umum
Pelajari properti langganan umum yang dapat Anda tetapkan di semua langganan.
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 Trusted Cloud yang sama dengan tempat layanan Pub/Sub menyimpan pesan. Layanan Pub/Sub mengirimkan pesan dari region Trusted Cloud yang sama berdasarkan 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 lagi 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 mengizinkan 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. Satu string yang tidak peka huruf besar/kecil yang digunakan webhook untuk memvalidasi target audiens yang dimaksud dari token tertentu ini.
Akun layanan. Pub/Sub otomatis membuat akun layanan untuk Anda dengan format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.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.
Akun utama yang membuat atau mengubah langganan push harus memiliki izin
iam.serviceAccounts.actAs
pada akun layanan yang dikelola penggunauntuk 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 dalam peranroles/iam.serviceAccountTokenCreator
) agar Pub/Sub dapat membuat token JWT untuk akun layanan yang ditentukan guna mengautentikasi permintaan push.
Pembukaan payload
Opsi Aktifkan pembukaan payload menghapus semua metadata pesan Pub/Sub, kecuali data pesan. Dengan pembukaan payload, data pesan dikirimkan langsung sebagai isi HTTP.
Anda juga dapat Mengaktifkan opsi Tulis metadata. Opsi Tulis metadata menambahkan kembali metadata pesan yang sebelumnya dihapus 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 Anda. Pub/Sub dapat mengirim pesan ke pemicu Eventarc, yang kemudian dapat meneruskannya ke layanan dalam VPC Anda, 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.app
default atau eksekusi Workflows. Domain kustom tidak berfungsi.Saat merutekan peristiwa melalui Eventarc ke tujuan Workflows yang titik 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 secara eksplisit menyetel konfigurasi push, seperti yang ditunjukkan dalam contoh berikut.
Konsol
Untuk membuat langganan push, selesaikan langkah-langkah berikut:
- Di konsol Trusted Cloud , buka halaman Subscriptions.
- Klik Buat langganan.
- Untuk kolom Subscription ID, masukkan nama.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan untuk memberi nama topik atau langganan.
- Pilih atau buat topik dari menu drop-down. Langganan menerima pesan dari topik.
- Pilih Jenis pengiriman sebagai Push.
- Tentukan URL endpoint.
- Pertahankan semua nilai default lainnya.
- Klik Buat.
Anda juga dapat membuat langganan dari bagian Topik. Pintasan ini berguna untuk mengaitkan topik dengan langganan.
- Di konsol Trusted Cloud , buka halaman Topics.
- Klikmore_vertdi samping topik yang akan dibuat langganannya.
- Dari menu konteks, pilih Buat langganan.
- Masukkan ID Langganan.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan untuk memberi nama topik atau langganan.
- Pilih Jenis pengiriman sebagai Push.
- Tentukan URL endpoint.
- Pertahankan semua nilai default lainnya.
- Klik Buat.
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
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.
Contoh,
https://myproject.appspot.com/myhandler
.
- PROJECT_ID adalah project ID Anda.
- SUBSCRIPTION_ID adalah ID langganan Anda.
- TOPIC_ID adalah topic ID Anda.
- PUSH_ENDPOINT adalah URL yang akan digunakan sebagai endpoint. Contoh,
https://myproject.appspot.com/myhandler
.
REST
Untuk membuat langganan push, gunakan metode
projects.subscriptions.create
:
Permintaan:
Permintaan harus diautentikasi dengan token akses di header Authorization
. Untuk mendapatkan token akses bagi 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:
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 Pub/Sub C++ API.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Go
Contoh berikut menggunakan library klien Go Pub/Sub 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 Pub/Sub Go API.
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 Node.js Pub/Sub.
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 Node.js Pub/Sub.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
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 API Ruby Pub/Sub.
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.