Pemicu Eventarc mendeklarasikan minat Anda pada peristiwa atau kumpulan peristiwa tertentu. Anda dapat mengonfigurasi perutean peristiwa dengan menentukan filter untuk pemicu, termasuk sumber peristiwa, dan layanan Cloud Run target.
Eventarc mengirimkan peristiwa ke penerima peristiwa dalam format CloudEvents melalui permintaan HTTP.
Petunjuk ini menunjukkan cara mengonfigurasi perutean peristiwa ke layanan Cloud Run yang dipicu oleh peristiwaCloud Storage langsung. Untuk detail selengkapnya, lihat daftar peristiwa langsung yang didukung.
Bersiap untuk membuat pemicu
Sebelum Anda membuat pemicu, selesaikan prasyarat ini:
Konsol
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat Google Cloud project.
Aktifkan Cloud Logging, Eventarc, dan Eventarc Publishing API.
Jika memungkinkan, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Cloud Storage peristiwa, aktifkan Cloud Storage API.
Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk layanan target Anda.
Di konsol Google Cloud, buka halaman Create service account.
Pilih project Anda.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh,
Service account for event trigger
.Klik Buat dan lanjutkan.
Untuk memberikan akses yang sesuai, dalam daftar Select a role, pilih peran Identity and Access Management (IAM) yang diperlukan yang akan diberikan ke akun layanan Anda untuk pemanggilan yang diautentikasi atau tidak diautentikasi. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Cloud Run.
Untuk peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan.Klik Lanjutkan.
Untuk menyelesaikan pembuatan akun, klik Selesai.
Berikan peran Pub/Sub Publisher ke agen layanan Cloud Storage. Biasanya, ini adalah
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
. Anda dapat mengambil alamat email untuk agen layanan Cloud Storage.Di konsol Google Cloud, buka halaman IAM.
Di baris untuk agen layanan Cloud Storage, klik
Edit principal. (Jika agen layanan tidak tercantum, lanjutkan ke langkah berikutnya.) Panel Edit akses akan terbuka.- Klik addTambahkan peran lain, lalu telusuri peran Pub/Sub Publisher.
- Pilih peran.
- Klik Simpan.
Jika agen layanan tidak tercantum, klik
Berikan akses. Panel Berikan akses akan terbuka.- Di kolom New principals, masukkan alamat email untuk agen layanan.
- Dalam daftar Select a role, telusuri peran Pub/Sub Publisher.
- Pilih peran.
- Klik Simpan.
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.
Aktifkan Cloud Logging, Eventarc, dan Eventarc Publishing API.
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
Jika memungkinkan, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Cloud Storage peristiwa, aktifkan
storage.googleapis.com
.Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk layanan target Anda.
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan. Panjangnya harus antara 6 hingga 30 karakter, serta dapat berisi karakter alfanumerik huruf kecil dan tanda hubung. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Berikan peran atau izin Identity and Access Management (IAM) yang diperlukan untuk pemanggilan yang diautentikasi atau tidak diautentikasi. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Cloud Run.
Berikan peran
pubsub.publisher
ke akun layanan Cloud Storage:SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/pubsub.publisher"
Buat pemicu
Anda dapat membuat pemicu Eventarc menggunakan Google Cloud CLI atau melalui Konsol Google Cloud.
Konsol
- Di Konsol Google Cloud, buka halaman Triggers Eventarc.
- Klik Create trigger.
- Ketik Nama pemicu.
Ini adalah ID pemicu dan harus diawali dengan huruf. Kolom ini dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.
- Untuk Jenis pemicu, pilih Sumber Google.
- Dalam daftar Event provider, pilih
Cloud Storage.
Perhatikan bahwa nama penyedia peristiwa yang digunakan dalam Google Cloud dokumentasi terkait mungkin tidak memiliki awalan Cloud atau Google Cloud. Misalnya, di konsol, Memorystore for Redis disebut sebagai Google Cloud Memorystore for Redis.
- Dalam daftar Event type, dari peristiwa Direct,
pilih jenis peristiwa:
- google.cloud.storage.object.v1.archived: peristiwa dikirim saat versi aktif sebuah objek diarsipkan atau dihapus. Peristiwa ini hanya dikirim untuk bucket pembuatan versi.
- google.cloud.storage.object.v1.delete: peristiwa dikirim saat objek dihapus secara permanen. Bergantung pada
setelan pembuatan versi objek untuk bucket,
hal ini berarti:
- Untuk bucket pembuatan versi, peristiwa ini hanya dikirim saat versi dihapus secara permanen (tetapi tidak dikirim saat objek diarsipkan).
- Untuk bucket non-pembuatan versi, bucket ini dikirim saat objek dihapus atau ditimpa.
- google.cloud.storage.object.v1.finalized: peristiwa dikirim saat objek baru dibuat (atau objek yang sudah ada ditimpa, dan generasi baru objek tersebut dibuat) di dalam bucket.
- google.cloud.storage.object.v1.metadataUpdated: peristiwa dikirim saat [metadata](/storage/docs/metadata) objek yang ada berubah.
- Dalam daftar Jenis konten data peristiwa, pilih encoding
payload peristiwa.
Untuk peristiwa langsung dari Cloud Storage, nilainya harus application/json.
- Tentukan atau jelajahi ID unik global untuk Bucket Cloud Storage.
Bucket Cloud Storage harus berada di projectGoogle Cloud dan region atau multi-region yang sama dengan pemicu Eventarc.
- Pilih Region.
Pemicu Cloud Storage untuk Eventarc tersedia di lokasi single-region, dual-region, dan multi-region]. Perlu diperhatikan bahwa bucket Cloud Storage harus berada di project Google Cloud dan region atau multi-region yang sama dengan pemicu Eventarc.
Peristiwa dikirim menggunakan notifikasi Pub/Sub dari Cloud Storage. Menyiapkan terlalu banyak notifikasi yang didaftarkan di bucket yang sama dapat menghabiskan batas notifikasi untuk bucket seperti yang ditunjukkan oleh error
Cloud Storage bucket ...: Pub/Sub notification limit reached
. Bucket dapat memiliki hingga 10 konfigurasi notifikasi yang ditetapkan untuk dipicu untuk peristiwa tertentu. Lihat kuota dan batasan lainnya di halaman kuota dan batas Cloud Storage. - Pilih Service account yang akan memanggil layanan
atau alur kerja Anda.
Atau, Anda dapat membuat akun layanan baru.
Tindakan ini menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu dan tempat Anda sebelumnya memberikan peran tertentu yang diperlukan oleh Eventarc.
- Dalam daftar Event destination, pilih Cloud Run.
- Pilih layanan.
Ini adalah nama layanan yang menerima peristiwa untuk pemicu. Layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (
/
), setiap kali peristiwa dibuat. - Anda juga dapat menentukan Jalur URL layanan sebagai tujuan pengiriman
permintaan masuk.
Ini adalah jalur relatif pada layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Contoh:
/
,/route
,route
,route/subroute
. - Jika ingin, untuk menambahkan label, Anda dapat mengklik Apa yang dimaksud dengan label? Tambahkan label. Label adalah key-value pair yang membantu Anda mengatur Google Cloud resource. Untuk mengetahui informasi selengkapnya, lihat
- Klik Buat.
Setelah pemicu dibuat, filter sumber peristiwa tidak dapat diubah. Sebagai gantinya, buat pemicu baru dan hapus yang lama. Untuk mengetahui informasi selengkapnya, lihat Mengelola pemicu.
gcloud
Anda dapat membuat pemicu dengan menjalankan perintah gcloud eventarc triggers create
beserta flag wajib dan opsional.
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters="bucket=BUCKET" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti kode berikut:
TRIGGER
: ID pemicu atau ID yang sepenuhnya memenuhi syarat.LOCATION
: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan propertieventarc/location
; misalnya,gcloud config set eventarc/location us-central1
.Bucket Cloud Storage harus berada di project Google Cloud dan region atau multi-region yang sama dengan pemicu Eventarc. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
-
DESTINATION_RUN_SERVICE
: nama layanan Cloud Run yang menerima peristiwa untuk pemicu. Layanan dapat berada di salah satu lokasi yang didukung Cloud Run dan tidak harus berada di lokasi yang sama dengan pemicu. Namun, layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (/
), setiap kali peristiwa dibuat. -
DESTINATION_RUN_REGION
: (opsional) region tempat layanan Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, layanan diasumsikan bahwa layanan berada di region yang sama dengan pemicu. EVENT_FILTER_TYPE
: ID peristiwa Cloud Storage dan dapat berupa salah satu dari hal berikut:google.cloud.storage.object.v1.finalized
: peristiwa dikirim saat objek baru dibuat (atau objek yang sudah ada ditimpa, dan generasi baru objek tersebut dibuat) di dalam bucketgoogle.cloud.storage.object.v1.archived
: peristiwa dikirim saat versi aktif sebuah objek diarsipkan atau dihapus. Peristiwa ini hanya dikirim untuk bucket pembuatan versi.google.cloud.storage.object.v1.deleted
: peristiwa dikirim saat objek dihapus secara permanen. Bergantung pada setelan pembuatan versi objek untuk bucket, hal ini berarti:- Untuk bucket pembuatan versi, peristiwa ini hanya dikirim saat versi dihapus secara permanen (tetapi tidak dikirim saat objek diarsipkan).
- Untuk bucket non-pembuatan versi, bucket ini dikirim saat objek dihapus atau ditimpa.
google.cloud.storage.object.v1.metadataUpdated
: peristiwa dikirim saat metadata objek yang ada berubah.
BUCKET
adalah ID unik global dari bucket Cloud Storage.SERVICE_ACCOUNT_NAME
: nama akun layanan yang dikelola pengguna.PROJECT_ID
: Google Cloud Project ID Anda.
Catatan:
- Untuk peristiwa langsung dari Cloud Storage, encoding
payload peristiwa adalah
application/json
. - Tanda berikut diperlukan:
--event-filters="type=EVENT_FILTER_TYPE"
--event-filters="bucket=BUCKET"
- Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan koma dalam satu tanda
--event-filters
=[ATTRIBUTE
=VALUE
,...], atau Anda dapat mengulangi tanda tersebut untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung. - Setelah pemicu dibuat, jenis filter peristiwa tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
- Peristiwa dikirim menggunakan notifikasi Pub/Sub dari Cloud Storage.
Menyiapkan terlalu banyak notifikasi yang didaftarkan pada bucket yang sama
dapat menghabiskan batas notifikasi untuk bucket seperti yang ditunjukkan oleh
error
Cloud Storage bucket ...: Pub/Sub notification limit reached
. Bucket dapat memiliki hingga 10 konfigurasi notifikasi yang ditetapkan untuk dipicu untuk peristiwa tertentu. Lihat kuota dan batasan lainnya di halaman kuota dan batas Cloud Storage. - Tanda
--service-account
digunakan untuk menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu tersebut. - Secara opsional, tentukan jalur relatif di layanan Cloud Run
tujuan tempat peristiwa untuk pemicu harus dikirim menggunakan
tanda
--destination-run-path
.
Contoh:
gcloud eventarc triggers create helloworld-trigger \ --location=us-central1 \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=my-bucket" \ --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Perintah ini membuat pemicu yang disebut helloworld-trigger
untuk bucket Cloud Storage my-bucket
dan peristiwa yang diidentifikasi sebagai google.cloud.storage.object.v1.finalized
.
Terraform
Anda dapat membuat pemicu untuk tujuan Cloud Run menggunakan Terraform. Untuk mengetahui detailnya, baca Membuat pemicu menggunakan Terraform.
Membuat daftar pemicu
Anda dapat mengonfirmasi pembuatan pemicu dengan mencantumkan pemicu Eventarc menggunakan Google Cloud CLI atau melalui Konsol Google Cloud.
Konsol
Di Konsol Google Cloud, buka halaman Triggers Eventarc.
Halaman ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, wilayah, penyedia peristiwa, tujuan, dan lainnya.
Untuk memfilter pemicu:
- Klik Filter atau kolom Pemicu filter.
- Di daftar Properti, pilih opsi untuk memfilter pemicu.
Anda dapat memilih satu properti atau menggunakan operator logika
OR
untuk menambahkan lebih banyak properti.Untuk mengurutkan pemicu, di samping judul kolom yang didukung, klik
Urutkan.
gcloud
Jalankan perintah berikut untuk membuat daftar pemicu:
gcloud eventarc triggers list --location=-
Perintah ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, jenis, tujuan, dan status.