Dokumen ini menjelaskan cara membuat langganan push. Anda dapat menggunakan konsol Google 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 level project. Anda juga memerlukan izin level resource jika langganan dan topik Anda berada dalam project yang berbeda, seperti yang akan dibahas nanti di bagian ini.
Untuk mendapatkan izin yang diperlukan untuk membuat langganan push,
minta administrator untuk memberi Anda peran IAM
Pub/Sub Editor (roles/pubsub.editor
) pada project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditetapkan 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:
-
Buat langganan:
pubsub.subscriptions.create
-
Menghapus langganan:
pubsub.subscriptions.delete
-
Dapatkan langganan:
pubsub.subscriptions.get
-
Cantumkan langganan:
pubsub.subscriptions.list
-
Memperbarui langganan:
pubsub.subscriptions.update
-
Melampirkan langganan ke topik:
pubsub.topics.attachSubscription
-
Mendapatkan kebijakan IAM untuk langganan:
pubsub.subscriptions.getIamPolicy
-
Konfigurasi kebijakan IAM untuk langganan:
pubsub.subscriptions.setIamPolicy
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Jika Anda perlu membuat langganan push
dalam satu project yang terkait dengan topik di project
lain, minta administrator topik Anda untuk memberi Anda juga peran IAM
(roles/pubsub.editor)
Pub/Sub Editor pada 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 valid yang ditandatangani oleh certificate authority. Layanan Pub/Sub mengirimkan pesan ke endpoint push dari region Google Cloud yang sama dengan tempat layanan Pub/Sub menyimpan pesan. Layanan Pub/Sub mengirimkan pesan dari region Google Cloud yang sama atas dasar upaya terbaik.
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.
Authentication
Aktifkan autentikasi. Jika diaktifkan, pesan yang dikirim oleh Pub/Sub ke endpoint push akan menyertakan header otorisasi agar endpoint dapat mengautentikasi permintaan. Mekanisme autentikasi dan otorisasi otomatis tersedia untuk endpoint App Engine Standar dan Cloud Functions 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 spesifik kepada akun layanan khusus yang dikelola Google - seperti yang dibahas di bagian berikutnya.
Akun layanan yang dikelola pengguna (wajib). Akun layanan yang terkait dengan langganan push. Akun ini digunakan sebagai klaim
email
JSON Web Token (JWT) yang dihasilkan. Berikut adalah daftar persyaratan untuk akun layanan:Akun layanan ini harus berada dalam project yang sama dengan langganan push.
Akun utama yang membuat atau mengubah langganan push harus memiliki izin
iam.serviceAccounts.actAs
di akun layanan. Anda dapat memberikan peran dengan izin ini di project, folder, atau organisasi agar pemanggil dapat meniru identitas beberapa akun layanan atau memberikan peran dengan izin ini di akun layanan agar pemanggil hanya meniru identitas akun layanan ini.
Penonton. String tunggal yang tidak peka huruf besar/kecil yang digunakan webhook untuk memvalidasi audiens yang dituju dari token khusus ini.
Akun layanan yang dikelola Google (wajib).
Pub/Sub secara otomatis membuat akun layanan untuk Anda dengan format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Akun layanan ini harus diberi izin
iam.serviceAccounts.getOpenIdToken
(termasuk dalam peranroles/iam.serviceAccountTokenCreator
) agar Pub/Sub dapat membuat token JWT untuk permintaan push yang diautentikasi.
Pembukaan payload
Opsi Enable payload unwrapping menghapus pesan Pub/Sub dari semua metadata pesan, kecuali data pesan. Dengan pembukaan payload, data pesan akan dikirim langsung sebagai isi HTTP.
- Menulis metadata. Menambahkan kembali metadata pesan yang telah dihapus sebelumnya ke header permintaan.
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 Alur kerja. Domain kustom tidak berfungsi.Saat mengarahkan peristiwa melalui Eventarc ke tujuan Workflows yang endpoint push-nya ditetapkan ke eksekusi Workflow, Anda hanya dapat membuat langganan push baru melalui Eventarc.
Anda tidak dapat memperbarui langganan push yang sudah ada. Langganan push ini 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 konsol Google Cloud, buka halaman Langganan.
- Klik Buat langganan.
- Untuk kolom ID Langganan, 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 menerima pesan dari topik.
- Pilih Jenis pengiriman 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 konsol Google Cloud, buka halaman Topics.
- Klik more_vert di samping topik tempat langganan dibuat.
- Dari menu konteks, pilih Buat langganan.
- Masukkan ID Langganan.
Untuk mengetahui informasi tentang cara memberi nama langganan, lihat Panduan memberi nama topik atau langganan.
- Pilih Jenis pengiriman sebagai Push.
- Tentukan URL endpoint.
- Pertahankan semua nilai default lainnya.
- Klik Create.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah 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 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.
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 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 keterangan:
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 informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C++ API.
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API C# Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Node.js
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API PHP Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Pub/Sub menggunakan library klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Ruby Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Langkah selanjutnya
- Membuat atau mengubah langganan dengan perintah
gcloud
. - Membuat atau mengubah langganan dengan REST API.