Dokumen ini menjelaskan cara membuat langganan Cloud Storage. Anda dapat menggunakan konsol Google Cloud, Google Cloud CLI, library klien, atau Pub/Sub API untuk membuat langganan Cloud Storage.
Sebelum memulai
Sebelum membaca dokumen ini, pastikan Anda memahami hal-hal berikut:
- Cara kerja langganan Cloud Storage.
- Cara kerja Cloud Storage dan cara membuat serta mengelola bucket Cloud Storage.
- Cara mengonfigurasi topik yang dihentikan pengirimannya untuk menangani kegagalan pesan.
Peran dan izin yang diperlukan
Berikut adalah daftar panduan terkait peran dan izin:
Untuk membuat langganan, Anda harus mengonfigurasi kontrol akses di tingkat project.
Anda juga memerlukan izin tingkat resource jika subscription dan topik Anda berada di project yang berbeda, seperti yang akan dibahas nanti di bagian ini.
Untuk membuat langganan Cloud Storage, akun layanan Pub/Sub harus memiliki izin untuk menulis ke bucket Cloud Storage tertentu dan membaca metadata bucket. Untuk informasi selengkapnya tentang cara memberikan izin ini, lihat bagian berikut dalam dokumen ini.
Untuk mendapatkan izin yang diperlukan guna membuat langganan Cloud Storage,
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 yang telah ditentukan ini berisi izin yang diperlukan untuk membuat langganan Cloud Storage. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan Cloud Storage:
-
Buat langganan:
pubsub.subscriptions.create
-
Lampirkan langganan ke topik:
pubsub.topics.attachSubscription
-
Menarik dari langganan:
pubsub.subscriptions.consume
-
Mendapatkan langganan:
pubsub.subscriptions.get
-
Mencantumkan langganan:
pubsub.subscriptions.list
-
Memperbarui langganan:
pubsub.subscriptions.update
-
Menghapus langganan:
pubsub.subscriptions.delete
-
Dapatkan kebijakan IAM untuk langganan:
pubsub.subscriptions.getIamPolicy
-
Konfigurasikan 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 Cloud Storage di satu project yang terkait dengan topik di project lain, minta administrator topik untuk juga memberi Anda peran IAM (roles/pubsub.editor)
Editor Pub/Sub pada topik tersebut.
Menetapkan peran Cloud Storage ke akun layanan Pub/Sub
Beberapa layanan Google Cloud memiliki akun layanan yang dikelola Google Cloud yang
memungkinkan layanan mengakses resource Anda. Akun layanan ini dikenal sebagai
agen layanan. Pub/Sub membuat dan mengelola akun
layanan untuk setiap project dalam format
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
.
Untuk membuat langganan Cloud Storage, akun layanan Pub/Sub harus memiliki izin untuk menulis ke bucket Cloud Storage tertentu dan membaca metadata bucket. Pilih salah satu prosedur berikut:
Berikan izin di tingkat bucket. Di bucket Cloud Storage tertentu, berikan peran Storage Object Creator (
roles/storage.objectCreator
) dan peran Storage Legacy Bucket Reader (roles/storage.legacyBucketReader
) ke akun layanan Pub/Sub.Jika harus memberikan peran di tingkat project, Anda dapat memberikan peran Storage Admin (
roles/storage.admin
) di project yang berisi bucket Cloud Storage. Berikan peran ini ke akun layanan Pub/Sub.
Izin bucket
Lakukan langkah-langkah berikut untuk memberikan peran Storage Object Creator
(roles/storage.objectCreator
) dan Storage Legacy Bucket Reader
(roles/storage.legacyBucketReader
) di tingkat bucket:
Di konsol Google Cloud, buka halaman Cloud Storage.
Klik bucket Cloud Storage tempat Anda ingin menulis pesan.
Halaman Detail bucket akan terbuka.
Di halaman Detail bucket, klik tab Permissions.
Di tab Permissions > View by Principals, klik Grant access.
Halaman Berikan akses akan terbuka.
Di bagian Add Principals, masukkan nama akun layanan Pub/Sub Anda.
Format akun layanan adalah
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
. Misalnya, untuk project dengan PROJECT_NUMBER=112233445566
, akun layanan memiliki formatservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Di drop-down Assign roles > Select a role, masukkan
Creator
dan pilih peran Storage Object Creator.Klik Add another role.
Di drop-down Select a role, masukkan
Bucket Reader
, lalu pilih peran Storage Legacy Bucket Reader.Klik Simpan.
Izin project
Lakukan langkah-langkah berikut untuk memberikan peran Storage Admin
(roles/storage.admin
) di tingkat project:
Di konsol Google Cloud, buka halaman IAM.
Di tab Permissions > View by Principals, klik Grant access.
Halaman Berikan akses akan terbuka.
Di bagian Add Principals, masukkan nama akun layanan Pub/Sub Anda.
Format akun layanan adalah
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
. Misalnya, untuk project dengan PROJECT_NUMBER=112233445566
, akun layanan memiliki formatservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Di drop-down Assign roles > Select a role, masukkan
Storage Admin
, lalu pilih peran Storage Admin.Klik Simpan.
Untuk informasi selengkapnya tentang IAM Cloud Storage, lihat Cloud Storage Identity and Access Management.
Properti langganan Cloud Storage
Saat mengonfigurasi langganan Cloud Storage, Anda harus menentukan properti yang umum untuk semua jenis langganan dan beberapa properti khusus langganan Cloud Storage tambahan.
Properti langganan umum
Pelajari properti langganan umum yang dapat Anda tetapkan di semua langganan.
Nama bucket
Bucket Cloud Storage harus sudah ada sebelum Anda membuat langganan Cloud Storage.
Pesan dikirim sebagai batch dan disimpan di bucket Cloud Storage. Satu batch atau file disimpan sebagai objek di bucket.
Bucket Cloud Storage harus menonaktifkan Pemohon Membayar.
Untuk membuat bucket Cloud Storage, lihat artikel Membuat bucket.
Awalan, akhiran, dan tanggal waktu nama file
File Cloud Storage output yang dihasilkan oleh langganan Cloud Storage disimpan sebagai objek di bucket Cloud Storage. Nama objek yang disimpan di bucket Cloud Storage memiliki format berikut: <file-prefix><UTC-date-time>_<uuid><file-suffix>
.
Daftar berikut menyertakan detail format file dan kolom yang dapat Anda sesuaikan:
<file-prefix>
adalah awalan nama file kustom. Kolom ini bersifat opsional.<UTC-date-time>
adalah string yang dibuat otomatis dan dapat disesuaikan berdasarkan waktu pembuatan objek.<uuid>
adalah string acak yang dibuat otomatis untuk objek.<file-suffix>
adalah akhiran nama file kustom. Kolom ini bersifat opsional. Akhiran nama file tidak boleh diakhiri dengan "/".Anda dapat mengubah awalan dan akhiran nama file:
Misalnya, jika nilai awalan nama file adalah
prod_
dan nilai akhiran nama file adalah_archive
, contoh nama objek adalahprod_2023-09-25T04:10:00+00:00_uN1QuE_archive
.Jika Anda tidak menentukan awalan dan akhiran nama file, nama objek yang disimpan di bucket Cloud Storage akan memiliki format:
<UTC-date-time>_<uuid>
.Persyaratan penamaan objek Cloud Storage juga berlaku untuk awalan dan akhiran nama file. Untuk mengetahui informasi selengkapnya, lihat Tentang objek Cloud Storage.
Anda dapat mengubah cara tanggal dan waktu ditampilkan dalam nama file:
Pencocok tanggal/waktu wajib yang hanya dapat Anda gunakan sekali: tahun (
YYYY
atauYY
), bulan (MM
), hari (DD
), jam (hh
), menit (mm
), detik (ss
). Misalnya,YY-YYYY
atauMMM
tidak valid.Pencocok opsional yang hanya dapat Anda gunakan sekali: pemisah tanggal dan waktu (
T
) serta offset zona waktu (Z
atau+00:00
).Elemen opsional yang dapat Anda gunakan beberapa kali: tanda hubung (
-
), garis bawah (_
), titik dua (:
), dan garis miring (/
).Misalnya, jika nilai format tanggal waktu nama file adalah
YYYY-MM-DD/hh_mm_ssZ
, nama objek contohnya adalahprod_2023-09-25/04_10_00Z_uNiQuE_archive
.Jika format tanggal waktu nama file diakhiri dengan karakter yang bukan pencocok, karakter tersebut akan menggantikan pemisah antara
<UTC-date-time>
dan<uuid>
. Misalnya, jika nilai format tanggal waktu nama file adalahYYYY-MM-DDThh_mm_ss-
, nama objek contohnya adalahprod_2023-09-25T04_10_00-uNiQuE_archive
.
Pengelompokan file
Langganan Cloud Storage memungkinkan Anda memutuskan kapan ingin membuat file output baru yang disimpan sebagai objek di bucket Cloud Storage. Pub/Sub menulis file output saat salah satu kondisi pengelompokan yang ditentukan terpenuhi. Berikut adalah kondisi pengelompokan Cloud Storage:
Durasi maksimum batch penyimpanan. Setelan ini wajib diisi. Langganan Cloud Storage akan menulis file output baru jika nilai durasi maksimum yang ditentukan terlampaui. Jika Anda tidak menentukan nilai, nilai default 5 menit akan diterapkan. Berikut adalah nilai yang berlaku untuk durasi maksimum:
- Nilai minimum = 1 menit
- Nilai default = 5 menit
- Nilai maksimum = 10 menit
Byte maksimum batch penyimpanan. Ini adalah setelan opsional. Langganan Cloud Storage akan menulis file output baru jika nilai byte maksimum yang ditentukan terlampaui. Berikut adalah nilai yang berlaku untuk byte maksimum:
- Nilai minimum = 1 KB
- Nilai maksimum = 10 GiB
Pesan maksimum batch penyimpanan. Ini adalah setelan opsional. Langganan Cloud Storage akan menulis file output baru jika jumlah pesan maksimum yang ditentukan terlampaui. Berikut adalah nilai yang berlaku untuk pesan maksimum:
- Nilai minimum = 1.000
Misalnya, Anda dapat mengonfigurasi durasi maksimum sebagai 6 menit dan byte maksimum sebagai 2 GB. Jika pada menit ke-4, file output mencapai ukuran file 2 GB, Pub/Sub akan menyelesaikan file sebelumnya dan mulai menulis ke file baru.
Langganan Cloud Storage mungkin menulis ke beberapa file di bucket Cloud Storage secara bersamaan. Jika telah mengonfigurasi langganan untuk membuat file baru setiap menit ke-6, Anda mungkin mengamati beberapa file Cloud Storage yang dibuat setiap 6 menit.
Dalam beberapa situasi, Pub/Sub mungkin mulai menulis ke file baru lebih awal dari waktu yang dikonfigurasi oleh kondisi pengelompokan file. File juga dapat melebihi nilai Max bytes jika langganan menerima pesan yang lebih besar dari nilai Max bytes.
Format file
Saat membuat langganan Cloud Storage, Anda dapat menentukan format file output yang akan disimpan di bucket Cloud Storage sebagai Text atau Avro.
Teks: Pesan disimpan sebagai teks biasa. Karakter baris baru memisahkan pesan dari pesan sebelumnya dalam file. Hanya payload pesan yang disimpan, bukan atribut atau metadata lainnya.
Avro: Pesan disimpan dalam format biner Apache Avro. Saat memilih Avro, Anda dapat mengaktifkan properti tambahan berikut:
Tulis metadata: Opsi ini memungkinkan Anda menyimpan metadata pesan bersama dengan pesan. Metadata seperti kolom
subscription_name
,message_id
,publish_time
, danattributes
ditulis ke kolom tingkat atas dalam objek Avro output, sedangkan semua properti pesan lainnya selain data (misalnya, ordering_key, jika ada) ditambahkan sebagai entri dalam petaattributes
.Jika metadata tulis dinonaktifkan, hanya payload pesan yang akan ditulis ke objek Avro output. Berikut adalah skema Avro untuk pesan output dengan metadata tulis dinonaktifkan:
{ "type": "record", "namespace": "com.google.pubsub", "name": "PubsubMessage", "fields": [ { "name": "data", "type": "bytes" } ] }
Berikut adalah skema Avro untuk pesan output dengan metadata tulis diaktifkan:
{ "type": "record", "namespace": "com.google.pubsub", "name": "PubsubMessageWithMetadata", "fields": [ { "name": "subscription_name", "type": "string" }, { "name": "message_id", "type": "string" }, { "name": "publish_time", "type": { "type": "long", "logicalType": "timestamp-micros" } }, { "name": "attributes", "type": { "type": "map", "values": "string" } }, { "name": "data", "type": "bytes" } ] }
Gunakan skema topik: Opsi ini memungkinkan Pub/Sub menggunakan skema topik Pub/Sub yang dipasangkan ke langganan saat menulis file Avro.
Saat menggunakan opsi ini, jangan lupa untuk memeriksa persyaratan tambahan berikut:
Skema topik harus dalam format Apache Avro.
Jika gunakan skema topik dan tulis metadata diaktifkan, skema topik harus memiliki objek Record di root-nya. Pub/Sub akan memperluas daftar kolom Data untuk menyertakan kolom metadata. Akibatnya, Data tidak boleh berisi kolom apa pun dengan nama yang sama dengan kolom metadata (
subscription_name
,message_id
,publish_time
, atauattributes
).
Membuat langganan Cloud Storage
Konsol
-
Di konsol Google Cloud, buka halaman Subscriptions.
-
Klik Buat langganan.
-
Untuk kolom Subscription ID, masukkan nama.
Untuk 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.
Untuk mengetahui informasi tentang cara membuat topik, lihat Membuat dan mengelola topik.
-
Pilih Jenis pengiriman sebagai Tulis ke Cloud Storage.
-
Untuk bucket Cloud Storage, klik Browse.
-
Anda dapat memilih bucket yang ada dari project yang sesuai.
-
Anda juga dapat mengklik ikon buat dan mengikuti petunjuk di layar untuk membuat bucket baru.
Setelah membuat bucket, pilih bucket untuk langganan Cloud Storage.
Untuk mengetahui informasi selengkapnya tentang cara membuat bucket, lihat Membuat bucket.
Saat Anda menentukan bucket, Pub/Sub akan memeriksa izin yang sesuai di bucket untuk akun layanan Pub/Sub. Jika ada masalah izin, Anda akan melihat pesan yang mirip dengan berikut ini:
Unable to verify if the Pub/Sub service agent has write permissions on this bucket. You may be lacking permissions to view or set permissions
. -
-
Jika Anda mengalami masalah izin, klik Tetapkan Izin dan ikuti petunjuk di layar.
Atau, ikuti petunjuk di Menetapkan peran Cloud Storage ke akun layanan Pub/Sub.
-
Untuk File format, pilih Text atau Avro.
Jika memilih Avro, Anda juga dapat menentukan secara opsional apakah Anda ingin menyimpan metadata pesan dalam output.
Untuk mengetahui informasi selengkapnya tentang kedua opsi tersebut, termasuk opsi metadata pesan untuk format Avro, lihat Format file.
-
Opsional: Anda dapat menentukan Awalan, akhiran, dan waktu file untuk semua file yang akan ditulis ke bucket Cloud Storage. File disimpan sebagai objek di bucket.
Untuk informasi selengkapnya tentang cara menetapkan awalan, akhiran, dan tanggal waktu file, lihat Awalan, akhiran, dan tanggal waktu nama file.
-
Untuk Pengelompokan file, tentukan waktu maksimum yang akan berlalu sebelum membuat file baru.
Anda juga dapat menetapkan ukuran file maksimum atau jumlah maksimum pesan untuk file.
Untuk informasi selengkapnya tentang kedua opsi pengelompokan file, lihat Pengelompokan file.
-
Sebaiknya aktifkan Dead lettering untuk menangani kegagalan pesan.
Untuk mengetahui informasi selengkapnya, lihat Topik surat tidak terkirim.
-
Anda dapat mempertahankan setelan lainnya sebagai default, lalu mengklik Create.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google 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 Cloud Storage, jalankan perintah
gcloud pubsub subscriptions create
.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --cloud-storage-bucket=BUCKET_NAME \ --cloud-storage-file-prefix=CLOUD_STORAGE_FILE_PREFIX \ --cloud-storage-file-suffix=CLOUD_STORAGE_FILE_SUFFIX \ --cloud-storage-file-datetime-format=CLOUD_STORAGE_FILE_DATETIME_FORMAT \ --cloud-storage-max-duration=CLOUD_STORAGE_MAX_DURATION \ --cloud-storage-max-bytes=CLOUD_STORAGE_MAX_BYTES \ --cloud-storage-max-messages=CLOUD_STORAGE_MAX_MESSAGES \ --cloud-storage-output-format=CLOUD_STORAGE_OUTPUT_FORMAT \ --cloud-storage-write-metadata --cloud-storage-use-topic-schema
Dalam perintah, hanya
SUBSCRIPTION_ID
, flag--topic
, dan flag--cloud-storage-bucket
yang diperlukan. Flag lainnya bersifat opsional dan dapat dihilangkan.Ganti kode berikut:
SUBSCRIPTION_ID
: Nama atau ID langganan Cloud Storage baru Anda.TOPIC_ID
: Nama atau ID topik Anda.BUCKET_NAME
: Menentukan nama bucket yang ada. Contoh,prod_bucket
. Nama bucket tidak boleh menyertakan project ID. Untuk membuat bucket, lihat Membuat bucket.CLOUD_STORAGE_FILE_PREFIX
: Menentukan awalan untuk nama file Cloud Storage. Misalnya,log_events_
.CLOUD_STORAGE_FILE_SUFFIX
: Menentukan akhiran untuk nama file Cloud Storage. Misalnya,.txt
.CLOUD_STORAGE_FILE_DATETIME_FORMAT
: Menentukan format tanggal dan waktu untuk nama file Cloud Storage. Contoh,YYYY-MM-DD/hh_mm_ssZ
.CLOUD_STORAGE_MAX_DURATION
: Durasi maksimum yang dapat berlalu sebelum file Cloud Storage baru dibuat. Nilai harus antara 1 m dan 10 m. Misalnya,5m
.CLOUD_STORAGE_MAX_BYTES
: Byte maksimum yang dapat ditulis ke file Cloud Storage sebelum file baru dibuat. Nilai harus antara 1 KB hingga 10 GB. Misalnya,20MB
.CLOUD_STORAGE_MAX_MESSAGES
: Jumlah maksimum pesan yang dapat ditulis ke file Cloud Storage sebelum file baru dibuat. Nilai harus lebih besar dari atau sama dengan 1.000. Contoh,100000
.CLOUD_STORAGE_OUTPUT_FORMAT
: Format output untuk data yang ditulis ke Cloud Storage. Nilainya adalah sebagai berikut:text
: Pesan ditulis sebagai teks mentah, dipisahkan oleh baris baru.avro
: Pesan ditulis sebagai biner Avro.--cloud-storage-write-metadata
dan--cloud-storage-use-topic-schema
hanya memengaruhi langganan dengan format outputavro
.
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C++ Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk 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 mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Memantau langganan Cloud Storage
Cloud Monitoring menyediakan sejumlah metrik untuk memantau langganan.
Untuk mengetahui daftar semua metrik yang tersedia terkait Pub/Sub dan deskripsinya, lihat Dokumentasi pemantauan untuk Pub/Sub.
Anda juga dapat memantau langganan dari dalam Pub/Sub.
Langkah selanjutnya
Memecahkan masalah langganan Cloud Storage.
Baca tentang Cloud Storage.
Tinjau harga untuk Pub/Sub, termasuk langganan Cloud Storage.