Eventarc mendukung penerapan pola jalur saat memfilter. Sintaksis pola jalur memungkinkan Anda menentukan ekspresi yang cocok dengan peristiwa. Hal ini memungkinkan Anda mengontrol tingkat 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 secara lebih luas.
Menerapkan pola jalur
Anda dapat menerapkan pola jalur untuk memfilter peristiwa saat membuat pemicu menggunakan halaman konsol Google Cloud Eventarc atau dengan menjalankan perintah gcloud
.
Misalnya, Anda dapat menerapkan pola jalur saat memfilter nama resource atau instance database (satu instance 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 diatur secara hierarkis menggunakan ID yang terdiri dari ID resource itu sendiri dan ID resource induk, semuanya dipisahkan oleh garis miring, seperti ini:/projects/project-1/datasets/dataset-id
. Pemfilteran yang dilakukan oleh Eventarc mencocokkan pola berdasarkan nilai ID ini. Untuk informasi selengkapnya, dalam dokumen ini, lihat Format nama resource.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 instance database, atau jalur dokumen yang ingin Anda terima peristiwanya saat data dibuat, diperbarui, atau dihapus di jalur tersebut, atau turunannya.Penentuan 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 spesifik, jenis peristiwa, dan tujuan.
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
dari
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
Dengan output yang 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 beberapa |
| |
ATAU |
Ekspresi
Ekspresi dapat berupa salah satu jenis segmen berikut dan tidak boleh kosong:
- Satu segmen
Wildcard
yang ditentukan sebagai*
cocok dengan nol atau beberapa 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 kurawal; misalnya,
buckets/{path=**}/files/{filename=file-*.txt}
. Karakter pengganti segmen tunggal dapat
menghapus =*
dalam grup pengambilan; misalnya,
/projects/_/buckets/{bucket}/objects/file.*
Format nama resource
Tabel berikut memberikan contoh nama resource lengkap untuk layananGoogle Cloud yang biasa digunakan. Daftar ini tidak 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 |
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 Storage1 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID |
Objek Cloud Storage1, 2 | //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 Storage, nama resource berisi garis bawah (_
), bukan project ID. Anda tidak dapat mengganti garis bawah dengan project ID, nama project, atau nomor project.
2 Gunakan seluruh nama objek, termasuk garis miring ke depan. Di Cloud Storage, 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/* |
Cocok dengan subjaringan apa pun di project-1 dan region-1 . |
/projects/_/buckets/bucket-1/objects/*.txt |
Mencocokkan semua file TXT di 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 di 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 |
Langkah berikutnya
- Untuk daftar peristiwa yang didukung oleh Eventarc, lihat Jenis peristiwa Google yang didukung oleh Eventarc.