ב-Eventarc יש תמיכה בהחלת תבנית נתיב כשמסננים. תחביר של תבנית נתיב מאפשר להגדיר ביטוי שתואם לאירועים. כך תוכלו לשלוט בגרנולריות של טריגר Eventarc שאתם יוצרים, ולתעד אירועים מסוימים ולהגיב להם. לדוגמה, אתם יכולים ליצור טריגר שחל על אירוע יחיד, כמו שינוי בקובץ ספציפי, או להרחיב את היקף התבנית וליצור טריגר שחל על יותר אירועים.
החלת דפוס נתיב
אפשר להחיל תבנית נתיב כדי לסנן אירועים כשיוצרים טריגר באמצעות דף המסוף של Eventarc Google Cloud או על ידי הפעלת פקודה של gcloud.
לדוגמה, אפשר להחיל תבנית נתיב כשמסננים לפי שמות משאבים או מופעים של מסדי נתונים (מופע יחיד או נתיב).
הגדרה של דפוס נתיב של שם משאב רלוונטית כשיוצרים טריגר לאירועים ביומני הביקורת של Cloud ולערכים של
resourceName. שם המשאב מציין את המשאב שנבדק באמצעות יומן ביקורת. שמות המשאבים מאורגנים בהיררכיה באמצעות מזהים שמורכבים ממזהה המשאב עצמו וממזהים של משאבי אב, כשהם מופרדים באמצעות לוכסנים, כך:/projects/project-1/datasets/dataset-id. הסינון שמבוצע על ידי Eventarc מתאים לתבניות על סמך הערכים של המזהים האלה. אתם יכולים להיעזר במידע שבחלק פורמט השמות של המשאבים.הגדרה של תבנית נתיב של מופע מסד נתונים רלוונטית כשיוצרים טריגר לאירועים של מסד נתונים בזמן אמת ב-Firebase ולערכים
instanceאוref. מופע של מסד נתונים מציין מופע של מסד נתונים בזמן אמת ב-Firebase. אפשר להחיל תבנית של נתיב על שם המופע של מופע מסד הנתונים, או על נתיב של מסמך שרוצים לקבל לגביו אירועים כשנתונים נוצרים, מתעדכנים או נמחקים בנתיב הזה או בכל אחד מהצאצאים שלו.הגדרה של תבנית נתיב של מזהה משאב רלוונטית כשיוצרים טריגר לאירועי Cloud IoT ולערכים
registryו-device. אתם יכולים להחיל תבנית נתיב כדי לסנן שינויים במאגרי מידע ובמכשירים במאגר מידע, באמצעות התאמה לתווים כלליים.
הוראות מפורטות מופיעות במאמר בנושא יצירת טריגר לספק, לסוג אירוע וליעד ספציפיים.
איך יודעים אם אפשר להחיל תבנית נתיב
כדי לוודא שאפשר להחיל תבנית נתיב על מאפיין של אירוע מספק, צריך לתאר את ספק האירוע. לדוגמה:
gcloud eventarc providers describe cloudaudit.googleapis.com --location=us-central1
הפלט אמור להיראות כך, וערך pathPatternSupported של
true מציין שאפשר להחיל תבנית נתיב:
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
או, למשל:
gcloud eventarc providers describe firebasedatabase.googleapis.com --location=us-central1
הפלט אמור להיראות כך:
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 [...]
מידע נוסף זמין במאמר gcloud eventarc providers describe.
התחביר של דפוס נתיב
התחביר של תבנית הנתיב מוגדר כך:
| דוגמת עיצוב | /? Segment (/Segment)* |
| פלח | CaptureGroup | Expression |
| CaptureGroup | { ID (= Expression)? } |
| Expression | Wildcard | MultiSegmentWildcard | NameSegment |
| NameSegment | (Character* Wildcard? Character*) |
| מזהה | [a-zA-Z0-9_]+ |
| תו כללי | * |
| MultiSegmentWildcard | ** |
| תו1 | [\\w\\s\\t~@#$%&.,?:;+='[]()-] |
מקרא:
? |
אפס או אחד |
* |
אפס או יותר |
+ |
אחד או יותר |
| |
או |
-
\wמתייחס למילה; מיוצג גם כ-[a-zA-Z0-9_] -
\tמתייחס לכרטיסייה -
\sמתייחס לתו רווח
ביטויים
הביטוי יכול להיות אחד מסוגי הפילוח הבאים, והוא לא יכול להיות ריק:
- פלח יחיד
Wildcardשמוגדר כ-*תואם לאפס תווים או יותר בתבנית. - התו
MultiSegmentWildcardשמוגדר כ-**מתאים לאפס פלחים או יותר בתבנית. -
NameSegmentמורכב מאפס או מאחד*ומתווים אחרים. השילוב הזה מאפשר לכם לסנן לפי קידומת, סיומת או סיומת קובץ. לדוגמה,file-*.txt.
שימו לב: נתיב יכול להכיל הרבה תווים כלליים של פלח יחיד, אבל רק תו כללי אחד של כמה פלחים. לדוגמה, הנתיב הבא לא תקין:
/projects/**/buckets/**.
אזוריות של משאבים
שמות של משאבים יכולים להכיל מזהי מיקום. לדוגמה:
/projects/$PROJECT_ID/locations/$REGION/triggers/my-trigger
עם זאת, ההתאמה של תבניות נתיבים מוגבלת על ידי האזוריות של המשאבים. לדוגמה, בטריגרים של יומני הביקורת של Cloud, תווים כלליים של מיקום תואמים רק לטריגרים מהאזור של יומני הביקורת של Cloud או לטריגרים גלובליים.
קבוצות לחילוץ
הסימן CaptureGroup מאפשר לכם ללכוד את התוכן של ביטוי. כדי לעשות את זה, מקצים את הערך לשם משתנה בסוגריים מסולסלים. לדוגמה, buckets/{path=**}/files/{filename=file-*.txt}. תו כללי של מקטע יחיד יכול להשמיט את =* בקבוצה לחילוץ. לדוגמה, /projects/_/buckets/{bucket}/objects/file.*
הפורמט של שם המשאב
בטבלה הבאה מובאות דוגמאות לשמות מלאים של משאבים לשירותיGoogle Cloud נפוצים. הרשימה היא חלקית. מידע נוסף על הפורמט של שמות מלאים של משאבים מופיע בקטע שמות משאבים שבמדריך לעיצוב API.
| סוג המשאב | פורמט השם המלא של המשאב |
|---|---|
| מערכי נתונים של BigQuery | //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID |
| חשבונות לחיוב ב-Cloud | //cloudbilling.googleapis.com/billingAccounts/BILLING_ACCOUNT_ID |
| מסמכים ב-Cloud Firestore1 | //firestore.googleapis.com/projects/PROJECT_ID/databases/DATABASE_ID/documents/DOCUMENT |
| שירותים להרצה ב-Cloud | //run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID |
| מכונות ב-Cloud SQL | //sqladmin.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID |
| קטגוריות של Cloud Storage2 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID |
| אובייקטים ב-Cloud Storage 2, 3 | //storage.googleapis.com/projects/_/buckets/BUCKET_ID/objects/OBJECT_ID |
| מכונות ב-Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID |
| רשתות של Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK |
| רשתות משנה של Compute Engine | //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK |
| אשכולות של Google Kubernetes Engine | //container.googleapis.com/projects/PROJECT_ID/clusters/CLUSTER_ID |
| שירות לאפליקציות בפלטפורמת App Engine על שרת proxy לאימות זהויות (IAP) | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/appengine-PROJECT_ID/services/APP_SERVICE_ID |
| שירות לקצה העורפי של Compute Engine על שרת proxy לאימות זהויות (IAP) | //iap.googleapis.com/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID_OR_NAME |
| נושאים של Pub/Sub | //pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID |
| ארגונים במנהל המשאבים | //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_NUMBER |
| תיקיות במנהל המשאבים | //cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER |
| פרויקטים במנהל המשאבים | //cloudresourcemanager.googleapis.com/projects/PROJECT_ID |
1 ב-Cloud Firestore, לא מציינים לוכסן מוביל כשיוצרים טריגר (ראו דוגמאות). מידע נוסף זמין במאמר מודל הנתונים של Cloud Firestore.
2 ב-Cloud Storage, השם של המשאב כולל קו תחתון (_) ולא את מזהה הפרויקט. אי אפשר להחליף את הקו התחתון במזהה פרויקט, בשם פרויקט או במספר פרויקט.
3 ב-Cloud Storage, צריך להשתמש בשם האובייקט במלואו, כולל לוכסנים. התווים האלה הם חלק משם האובייקט ולא תווי הפרדה לנתיב.
דוגמאות
בדוגמאות הבאות אפשר לראות איך אפשר להשתמש בתחביר ואיך אי אפשר להשתמש בו.
דפוסים תקינים
| דוגמת קוד | תיאור |
|---|---|
/projects/project-1/datasets/dataset-1 |
שם משאב ספציפי. |
/projects/project-1/regions/region-1/subnetworks/* |
התאמה לכל רשת משנה ב-project-1 וב-region-1. |
/projects/_/buckets/bucket-1/objects/*.txt |
תואם לכל קובצי ה-TXT בדלי. |
/projects/_/buckets/bucket-1/objects/file-*.txt |
תואם לכל קובצי ה-TXT עם הקידומת file- בדלי. |
/projects/project-1/serviceAccounts/service-account-email-1/keys/** |
תואם לכל מפתח של כתובת האימייל בחשבון שירות ספציפי. |
/projects/_/**/file-*.txt |
תואם לכל קובץ TXT עם הקידומת file- בכל הדליים. |
/projects/_/buckets/bucket-*/objects/file-*.txt |
תואם לכל קובצי ה-TXT עם הקידומת file- בכל דלי עם הקידומת bucket-. |
/projects/_/buckets/{bucket}/objects/file.*/projects/_/buckets/{bucket=*}/objects/file.*/projects/_/buckets/*/objects/{filename=file.*}
|
שלוש תצוגות שונות של אותו מסנן. תואם לכל דלי עם קובץ בשם file מכל סוג. שתי הדוגמאות הראשונות כוללות גם את הקטגוריה, והדוגמה האחרונה כוללת את שם הקובץ.
|
/projects/project-1/zones/zone-1/instances/** |
התאמה לכל מה שמופיע ב-project-1 וב-zone-1. |
/projects/*/zones/zone-1/instances/** |
תואם לכל דבר ב-zone-1 בכל פרויקט. |
דפוסים לא תקינים
| דוגמת קוד | תיאור |
|---|---|
/projects/_/buckets/bucket-1/objects/ |
ביטוי ריק. |
/projects//buckets/bucket-1/objects/file1.txt |
ביטוי ריק. |
/projects/_/buckets/bucket**/objects/file1.txt |
הביטוי יכול להכיל רק תג * אחד. |
/projects/_/buckets/bucket-1/objects/file-*.* |
הביטוי יכול להכיל רק תג * אחד. |
/projects/**/buckets/** |
נתיב המשאב יכול להכיל רק ** אחד. |
/projects/_/buckets/{=*}/objects/file1.txt |
חסר מזהה בפלח. |
/projects/_/buckets/{bucket=}/objects/file1.txt |
ביטוי ריק בתוך קבוצה לחילוץ. |
/projects/_/buckets/{bucket/objects/file1.txt |
קבוצה לחילוץ לא נסגרה. |
התאמת תבניות
| דוגמת קוד | משאב | התאמות? |
|---|---|---|
/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 |
המאמרים הבאים
- רשימת האירועים שנתמכים על ידי Eventarc מופיעה במאמר סוגי אירועים של Google שנתמכים על ידי Eventarc.