יומני הביקורת של Cloud מתעדים אירועים בשירותים רבים של Google Cloud . באמצעות כיורים, אתם יכולים לסנן את היומנים האלה ולהעביר אותם לנושאי Pub/Sub שמפעילים פונקציות Cloud Run. כך אפשר להגיב לאירועים מכל שירות שלGoogle Cloud שמפיק יומני ביקורת.
בדף הזה מופיעה דוגמה להפעלת פונקציות מרשומות ביומן שמנותבות לנושא Pub/Sub. במדריך הזה משתמשים בטריגרים של Eventarc, אבל אפשר גם להשתמש בטריגרים ישירים של Pub/Sub כשמפעילים את הפונקציה.
מבנה האירועים של פונקציות שמופעלות על ידי Pub/Sub
פונקציות שמופעלות על ידי רשומות ביומן של Cloud Logging מקבלות אובייקט PubsubMessage שהפרמטר data שלו הוא מחרוזת בקידוד base64. באירועי יומן של Cloud Logging, פענוח הערך הזה מחזיר את רשומת היומן הרלוונטית כמחרוזת JSON.
לפני שמתחילים
הקוד לדוגמה מעביר את יומני הביקורת של Cloud לפונקציית Cloud Run. לפני שמריצים את הקוד לדוגמה, צריך:
במדריך בנושא טריגרים של Pub/Sub מפורטים ממשקי ה-API שצריך להפעיל והתפקידים שנדרשים כדי לפרוס פונקציות שמופעלות על ידי Pub/Sub.
קוד לדוגמה
אתם יכולים להשתמש בפונקציה שמופעלת על ידי Pub/Sub כדי לזהות יומנים שיוצאו מ-Cloud Logging ולהגיב להם:
Node.js
Python
Go
Java
פריסה והפעלה של פונקציה
כדי להגדיר טריגר במהלך פריסת הפונקציה:
מריצים את הפקודה הבאה בספרייה שמכילה את הקוד לדוגמה כדי לפרוס את הפונקציה:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGIONמחליפים את מה שכתוב בשדות הבאים:
- REGION: Google Cloud האזור שבו רוצים לפרוס את הפונקציה. לדוגמה,
europe-west1. - הדגל
--functionמציין את נקודת הכניסה לפונקציה בקוד המקור לדוגמה. זה הקוד ש-Cloud Run מריץ כשהפונקציה פועלת. הערך של הדגל הזה חייב להיות שם של פונקציה או שם מלא של מחלקה שקיימים בקוד המקור. - הדגל
--base-imageמציין את סביבת קובץ האימג' הבסיסי של הפונקציה. לפרטים נוספים על קובצי אימג' בסיסיים ועל החבילות שכלולות בכל קובץ אימג', ראו קובצי אימג' בסיסיים של סביבות זמן ריצה.
- REGION: Google Cloud האזור שבו רוצים לפרוס את הפונקציה. לדוגמה,
מריצים את הפקודה הבאה כדי ליצור טריגר שמסנן אירועים:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@מחליפים את מה שכתוב בשדות הבאים:
- TRIGGER_NAME: שם הטריגר.
- EVENTARC_TRIGGER_LOCATION: המיקום של הטריגר של Eventarc. באופן כללי, המיקום של טריגר Eventarc צריך להתאים למיקום של המשאב ב-Google Cloud שאתם רוצים לעקוב אחרי האירועים שלו. ברוב המקרים, כדאי לפרוס את הפונקציה באותו אזור. למידע נוסף על מיקומי הטריגרים של Eventarc, קראו את המאמר הסבר על מיקומי Eventarc.
- SERVICE: שם הפונקציה שאתם פורסים.
- REGION: האזור ב-Cloud Run שבו פרסתם את הפונקציה.
- PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud . טריגרים של Eventarc מקושרים לחשבונות שירות כדי להשתמש בהם כזהות כשמפעילים את הפונקציה. לחשבון השירות של הטריגר ב-Eventarc צריכה להיות הרשאה להפעיל את הפונקציה. כברירת מחדל, Cloud Run משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
- הדגל
--event-filtersמציין את מסנני האירועים שהטריגר עוקב אחריהם. כשאירוע תואם לכל מסנני האירועים, הוא מפעיל קריאה לפונקציה. לכל טריגר צריך להיות סוג אירוע נתמך. אי אפשר לשנות את סוג מסנן האירועים אחרי שיוצרים אותו. כדי לשנות את סוג מסנן האירועים, צריך ליצור טריגר חדש ולמחוק את הישן. אפשר לחזור על הדגל--event-filtersעם מסנן נתמך בפורמטATTRIBUTE=VALUEכדי להוסיף עוד מסננים. - TOPIC_NAME: השם של נושא Pub/Sub שמקבל את האירועים של רשומות היומן.
- הדגל
--transport-topicמציין את נושא Pub/Sub שבו Eventarc משתמש כדי להעביר אירועים לפונקציה. שימו לב שהדגל הזה לא נדרש אם לא יצרתם בעבר נושא Pub/Sub.
רשומה ביומן בענן
כשנוצרת רשומה ביומן של Cloud שתואמת לאחד מהמסננים, הרשומות התואמות ביומן של הפונקציה במסוףGoogle Cloud אמורות להיראות כך:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS