Eventarc mendukung penerapan pola jalur saat memfilter. Sintaksis pola jalur memungkinkan Anda menentukan ekspresi yang cocok dengan peristiwa. Hal ini memungkinkan Anda mengontrol perincian pemicu Eventarc yang Anda buat, serta merekam dan menindaklanjuti peristiwa tertentu. Misalnya, Anda dapat membuat pemicu yang berlaku untuk satu peristiwa, seperti perubahan pada file tertentu, atau Anda dapat memperluas cakupan pola dan membuat pemicu yang berlaku lebih luas.
Menerapkan pola jalur
Anda dapat menerapkan pola jalur untuk memfilter peristiwa saat membuat pemicu
menggunakan halaman konsol Eventarc Google Cloud atau dengan menjalankan
perintah gcloud
.
Misalnya, Anda dapat menerapkan pola jalur saat memfilter nama resource atau instance database (instance tunggal atau jalur).
Menentukan pola jalur nama resource berlaku saat membuat pemicu untuk peristiwa Cloud Audit Logs dan untuk nilai
resourceName
. Nama resource menunjukkan resource yang diaudit melalui log audit. Nama resource disusun secara hierarkis menggunakan ID yang terdiri dari ID resource itu sendiri dan ID resource induk, yang semuanya dipisahkan dengan garis miring, seperti ini:/projects/project-1/datasets/dataset-id
. Pemfilteran yang dilakukan oleh Eventarc mencocokkan pola berdasarkan nilai ID ini. Untuk mengetahui informasi selengkapnya, lihat Format nama resource dalam dokumen ini.Menentukan pola jalur instance database berlaku saat membuat pemicu untuk peristiwa Firebase Realtime Database dan untuk nilai
instance
atauref
. Instance database menunjukkan instance Firebase Realtime Database. Anda dapat menerapkan pola jalur ke nama instance database, atau jalur dokumen yang ingin Anda terima peristiwanya saat data dibuat, diperbarui, atau dihapus di jalur tersebut, atau di turunan mana pun.Menentukan pola jalur ID resource berlaku saat membuat pemicu untuk peristiwa Cloud IoT dan untuk nilai
registry
dandevice
. Anda dapat menerapkan pola jalur untuk memfilter perubahan di registry, dan perangkat di registry, dengan pencocokan karakter pengganti.
Untuk mengetahui detailnya, lihat petunjuk untuk membuat pemicu bagi penyedia, jenis peristiwa, dan tujuan tertentu.
Mengidentifikasi apakah Anda dapat menerapkan pola jalur
Untuk mengonfirmasi apakah Anda dapat menerapkan pola jalur ke atribut peristiwa dari penyedia, jelaskan penyedia peristiwa. Contoh:
gcloud eventarc providers describe cloudaudit.googleapis.com --location=us-central1
Output-nya mirip dengan berikut ini dan nilai pathPatternSupported
sebesar
true
menunjukkan bahwa Anda dapat menerapkan pola jalur:
displayName: Cloud Audit Logs eventTypes: - description: An audit log is created that matches the trigger's filter criteria. filteringAttributes: - attribute: methodName description: The identifier of the service's operation. required: true - attribute: resourceName description: The complete path to a resource. Used to filter events for a specific resource. pathPatternSupported: true - attribute: serviceName description: The identifier of the Google Cloud service. required: true - attribute: type required: true type: google.cloud.audit.log.v1.written name: projects/project-name/locations/us-central1/providers/cloudaudit.googleapis.com
Atau, misalnya:
gcloud eventarc providers describe firebasedatabase.googleapis.com --location=us-central1
Jika outputnya mirip dengan berikut ini:
displayName: Firebase Realtime Database eventTypes: - description: New data has been created in the database. filteringAttributes: - attribute: instance description: A single database instance. pathPatternSupported: true required: true - attribute: ref description: Pattern to match for the database instance. pathPatternSupported: true required: true - attribute: type required: true type: google.firebase.database.ref.v1.created [...]
Untuk informasi selengkapnya, lihat
gcloud eventarc providers describe
.
Sintaksis pola jalur
Sintaksis pola jalur ditentukan sebagai berikut:
Pola | /? Segment (/ Segment )* |
Segmen | CaptureGroup | Expression |
CaptureGroup | { ID (= Expression )? } |
Ekspresi | Wildcard | MultiSegmentWildcard | NameSegment |
NameSegment | ( Character * Wildcard ? Character *) |
ID | [a-zA-Z0-9_]+ |
Karakter pengganti | * |
MultiSegmentWildcard | ** |
Karakter1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
Legenda:
? |
nol atau satu |
* |
nol atau lebih |
+ |
satu atau lebih |
| |
ATAU |
\w
mengacu pada sebuah kata; juga ditampilkan sebagai[a-zA-Z0-9_]
\t
mengacu pada tab\s
mengacu pada karakter spasi kosong
Ekspresi
Ekspresi dapat berupa salah satu jenis segmen berikut dan tidak boleh kosong:
- Satu segmen
Wildcard
yang ditentukan sebagai*
cocok dengan nol atau lebih karakter dalam pola. MultiSegmentWildcard
yang ditentukan sebagai**
cocok dengan nol atau beberapa segmen dalam pola.NameSegment
terdiri dari nol atau satu*
dan karakter lainnya. Kombinasi ini memungkinkan Anda memfilter menurut awalan, akhiran, atau ekstensi file; misalnya,file-*.txt
.
Perhatikan bahwa jalur dapat berisi banyak karakter pengganti segmen tunggal, tetapi hanya
satu karakter pengganti multi-segmen. Misalnya, jalur berikut tidak valid:
/projects/**/buckets/**
.
Regionalitas resource
Nama resource dapat berisi ID lokasi. Contoh:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
Namun, pencocokan pola jalur dibatasi oleh regionalitas resource. Misalnya, untuk pemicu Cloud Audit Logs, karakter pengganti lokasi hanya cocok dengan pemicu dari region Cloud Audit Logs, atau pemicu global.
Grup tangkapan
CaptureGroup
memungkinkan Anda mengambil konten ekspresi. Anda melakukannya
dengan menetapkan nilai ke nama variabel dalam tanda kurung; misalnya,
buckets/{path=**}/files/{filename=file-*.txt}
. Karakter pengganti segmen tunggal dapat menghilangkan =*
dalam grup pengambilan; misalnya, /projects/_/buckets/{bucket}/objects/file.*
Format nama resource
Tabel berikut memberikan contoh nama lengkap resource untuk layananGoogle Cloud yang umum digunakan. Ini bukan daftar lengkap. Untuk mempelajari lebih lanjut cara nama lengkap resource yang diformat, lihat bagian Nama resource dalam panduan desain API.
Jenis resource | Format nama lengkap resource |
---|---|
datasets BigQuery | //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID |
akun Penagihan Cloud | //cloudbilling.googleapis.com/billingAccounts/BILLING_ACCOUNT_ID |
Dokumen1 Cloud Firestore | //firestore.googleapis.com/projects/PROJECT_ID/databases/DATABASE_ID/documents/DOCUMENT |
layanan Cloud Run | //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID |
Instance Cloud SQL | //sqladmin.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID |
Bucket Cloud Storage2 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID |
Objek Cloud Storage2, 3 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID/objects/OBJECT_ID |
Instance Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID |
jaringan Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK |
subnetwork Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK |
clusters Google Kubernetes Engine | //container.googleapis.com/projects/PROJECT_ID/clusters/CLUSTER_ID |
Identity-Aware Proxy Layanan aplikasi App Engine | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/appengine-PROJECT_ID/services/APP_SERVICE_ID |
Layanan backend Compute Engine IAP | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID_OR_NAME |
topik Pub/Sub | //pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID |
organisasi Resource Manager | //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_NUMBER |
folder Resource Manager | //cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER |
project Resource Manager | //cloudresourcemanager.googleapis.com/projects/PROJECT_ID |
1 Untuk Cloud Firestore, jangan tentukan garis miring di awal saat membuat pemicu (lihat contoh). Untuk mengetahui informasi selengkapnya, lihat model data Cloud Firestore.
2 Untuk Cloud Storage, nama resource berisi garis bawah (_
),
bukan project ID. Anda tidak dapat mengganti garis bawah dengan project ID, nama project, atau nomor project.
3 Untuk Cloud Storage, gunakan seluruh nama objek, termasuk garis miring ke depan. Karakter ini adalah bagian dari nama objek, bukan pemisah jalur.
Contoh
Contoh berikut menunjukkan cara Anda dapat dan tidak dapat menggunakan sintaksis.
Pola yang valid
Pola | Deskripsi |
---|---|
/projects/project-1/datasets/dataset-1 |
Nama resource tertentu. |
/projects/project-1/regions/region-1/subnetworks/* |
Mencocokkan subnetwork apa pun di project-1 dan region-1 . |
/projects/_/buckets/bucket-1/objects/*.txt |
Mencocokkan semua file TXT dalam bucket. |
/projects/_/buckets/bucket-1/objects/file-*.txt |
Mencocokkan semua file TXT dengan awalan file- di bucket. |
/projects/project-1/serviceAccounts/service-account-email-1/keys/** |
Mencocokkan kunci apa pun untuk email akun layanan tertentu. |
/projects/_/**/file-*.txt |
Mencocokkan file TXT apa pun dengan awalan file- untuk semua bucket. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
Mencocokkan semua file TXT dengan awalan file- untuk bucket apa pun
dengan awalan bucket- . |
/projects/_/buckets/{bucket}/objects/file.* /projects/_/buckets/{bucket=*}/objects/file.* /projects/_/buckets/*/objects/{filename=file.*}
|
Tiga representasi berbeda dari filter yang sama. Mencocokkan bucket apa pun dengan file bernama file dari jenis apa pun. Dua contoh pertama
juga mengambil bucket dan contoh terakhir mengambil nama file.
|
/projects/project-1/zones/zone-1/instances/** |
Cocok dengan apa pun di project-1 dan zone-1 . |
/projects/*/zones/zone-1/instances/** |
Cocok dengan apa pun di zone-1 dalam project apa pun. |
Pola yang tidak valid
Pola | Deskripsi |
---|---|
/projects/_/buckets/bucket-1/objects/ |
Ekspresi kosong. |
/projects//buckets/bucket-1/objects/file1.txt |
Ekspresi kosong. |
/projects/_/buckets/bucket**/objects/file1.txt |
Ekspresi hanya dapat berisi satu * . |
/projects/_/buckets/bucket-1/objects/file-*.* |
Ekspresi hanya dapat berisi satu * . |
/projects/**/buckets/** |
Jalur resource hanya dapat berisi satu ** . |
/projects/_/buckets/{=*}/objects/file1.txt |
ID tidak ada dalam segmen. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
Ekspresi kosong di dalam grup tangkapan. |
/projects/_/buckets/{bucket/objects/file1.txt |
Grup pengambilan tidak ditutup. |
Pencocokan pola
Pola | Resource | Kecocokan? |
---|---|---|
/buckets/bucket-1/objects/file1.txt |
/buckets/bucket-1/objects/file1.txt |
|
/buckets/bucket-1/objects/file2.txt |
||
/buckets/bucket-1/objects/* |
/buckets/bucket-1/objects/file3.txt |
|
/buckets/bucket-1/objects/file4.jpg |
||
/buckets/bucket-1/objects/files/file4.jpg |
||
/buckets/bucket-1/objects |
||
/buckets/bucket-1/objects/*.txt |
/buckets/bucket-1/objects/file5.txt |
|
/buckets/bucket-1/objects/file6.jpg |
||
/buckets/bucket-1/objects/file-*.txt |
/buckets/bucket-1/objects/file-777.txt |
|
/buckets/bucket-1/objects/file-.txt |
||
/buckets/bucket-1/objects/file.txt |
||
/projects/_/**/{filename=file-*.txt} |
/projects/_/objects/object-1/files/file-9.txt |
|
/projects/_/{ob}jects/**/-+=*/file-9.txt |
||
/projects/_/file-10.txt |
||
/projects/_/files-1/file-1.txt/files-2/file-2.txt |
||
/projects/_//file-1234.txt |
||
/projects/_/files/file-5.txt/file.txt |
||
{collection=[clients,users]}/id |
users/id |
|
clients/id |
||
[clients,users]/id |
||
{collection=clients,users}/id |
users/id |
|
clients/id |
||
clients,users/id |
||
all users/{id=.*_ +1@gmail.com} |
all-users/aa_ +1@gmail.com |
|
all users/bb_+1@gmail.com |
||
all users/cc +1@gmail.com |
Langkah berikutnya
- Untuk mengetahui daftar peristiwa yang didukung oleh Eventarc, lihat Jenis peristiwa Google yang didukung oleh Eventarc.