ב-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.