טריגרים של Cloud Storage (דור ראשון)
בפונקציות Cloud Run, טריגר של Cloud Storage מאפשר לקרוא לפונקציה בתגובה לשינויים ב-Cloud Storage. כשמגדירים טריגר של Cloud Storage לפונקציה, בוחרים סוג אירוע ומציינים קטגוריה של Cloud Storage. הפונקציה תופעל בכל פעם שיתרחש שינוי באובייקט (קובץ) בקטגוריה שצוינה.
.סוגי האירועים הבאים של Cloud Storage נתמכים:
| אירוע | סוג אירוע | תיאור |
|---|---|---|
| האובייקט הסופי |
|
מתרחש כשנוצר אובייקט חדש, או כשמתבצעת החלפה של אובייקט קיים ונוצרת גנרציה חדשה של האובייקט הזה. |
| האובייקט נמחק |
|
מתרחש כשמבצעים מחיקה רכה של אובייקט. מידע נוסף זמין במאמר בנושא מחיקה עם יכולת שחזור. |
| האובייקט הועבר לארכיון |
|
מתרחש כשגרסה פעילה של אובייקט הופכת לגרסה לא עדכנית. מידע נוסף זמין במאמר בנושא ניהול גרסאות של אובייקטים. |
| המטא-נתונים של האובייקט עודכנו |
|
מתרחש כשהמטא-הנתונים של אובייקט קיים משתנים. |
כדי שפונקציה תוכל להשתמש בטריגר של Cloud Storage, צריך להטמיע אותה כפונקציה מבוססת-אירועים:
אם משתמשים בפונקציית CloudEvent, נתוני האירוע של Cloud Storage מועברים לפונקציה בפורמט CloudEvents ומטען הנתונים של CloudEvent הוא מסוג
StorageObjectData.אם משתמשים בפונקציית רקע, מטען הייעודי (payload) של נתוני האירועים ב-Cloud Storage מועבר ישירות לפונקציה בפורמט
StorageObjectData.
מאגר Google Events מכיל משאבים נוספים לעבודה עם נתוני אירועים.
פריסה
אפשר לציין טריגר של Cloud Storage כשפורסים פונקציה. במאמר פריסת פונקציה של Cloud Run מוסבר איך פורסים פונקציה, ובקטעים הבאים מופיע מידע נוסף ספציפי להגדרת טריגרים של Cloud Storage במהלך הפריסה.
gcloud
אם מבצעים פריסה באמצעות ה-CLI של gcloud, אפשר להשתמש בסוג האירוע Object finalized של Cloud Storage עם הדגלים הבאים:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-bucket=YOUR_STORAGE_BUCKET \ [--retry] \ ...
- הדגל
--trigger-bucketמציין את הקטגוריה של Cloud Storage שהטריגר יעקוב אחריה. אירועים של סיום אובייקט בקטגוריה הזו יפעילו קריאות לפונקציה. - הדגל
--retryקובע אם יתבצע ניסיון חוזר אוטומטי לקריאות פונקציה שנכשלו. מידע נוסף זמין במאמר בנושא ניסיון חוזר של פונקציות מבוססות-אירועים.
כדי להשתמש בסוגי אירועים אחרים מלבד Object finalized, משתמשים בדגלים הבאים:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
אירועים ב-Cloud Storage מדור קודם
פונקציות מדור קודם ב-Cloud Run (דור ראשון) משתמשות בהתראות מדור קודם על שינויים באובייקטים עבור טריגרים של Cloud Storage:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-event=providers/cloud.storage/eventTypes/object.change \ --trigger-resource=YOUR_STORAGE_BUCKET \ ...
סוג האירוע הזה נתמך בפונקציות מדור קודם שכבר צורכות את האירועים האלה. עם זאת, לא מומלץ להשתמש בסוג האירוע הזה כי יכול להיות שהוא יוסר בעתיד.
המסוף
אם פורסים באמצעות מסוף Google Cloud , אפשר להגדיר טריגר של Cloud Storage בקטע Trigger:
- בשדה Trigger type, בוחרים באפשרות Cloud Storage.
- בשדה סוג האירוע, בוחרים סוג אירוע.
- בשדה Bucket, לוחצים על Browse כדי לבחור קטגוריה של Cloud Storage שהטריגר יעקוב אחריה. שינויים באובייקטים בתוך הדלי הזה יפעילו קריאות לפונקציה.
- מסמנים או מבטלים את הסימון של התיבה Retry on failure כדי לקבוע אם יתבצע ניסיון חוזר אוטומטי של קריאות פונקציה שנכשלו. מידע נוסף זמין במאמר בנושא ניסיון חוזר של פונקציות מבוססות-אירועים.
העברת אירועים
טריגרים של Cloud Storage מיושמים באמצעות התראות Pub/Sub ל-Cloud Storage. האירועים כפופים להתחייבויות למסירת התראות ב-Pub/Sub.
אפשר להגדיר עד 10 הגדרות של התראות להפעלה של אירוע ספציפי בקטגוריה של Cloud Storage. חריגה ממגבלות ההתראות של הדלי תגרום לכך שפריסות נוספות של פונקציות ייכשלו עם שגיאה כמו הבאה:
Cloud Storage bucket ...: Pub/Sub notification limit reached
כדי לעקוף את המגבלה הזו, אפשר לנהל נושא Pub/Sub משלכם ולרשום אותו לקבלת התראות Cloud Storage מהסוג שאתם רוצים שהפונקציה תגיב אליו. לדוגמה, אפשר להגדיר התראה אחת לאירוע שבחרתם (כמו יצירת אובייקט) לנושא Pub/Sub. לאחר מכן, צריך להגדיר מספר מנויים לפונקציה לפי הצורך כדי שהנושא יעבד את האירוע ויפיץ אותו למספר יעדים. לדוגמה:
- יצירת נושא Pub/Sub משלכם
- יוצרים הגדרה אחת של התראה בקטגוריית Cloud Storage שמופעלת באירוע ספציפי (כמו
OBJECT_FINALIZEליצירת אובייקט) ושולחת את האירוע לנושא Pub/Sub יחיד. - יוצרים פונקציה (או פונקציות) שמופעלת על ידי נושא Pub/Sub.
מידע נוסף על המגבלות של Cloud Storage אפשר למצוא במאמר בנושא מכסות ומגבלות ב-Cloud Storage.
השלבים הבאים
- איך כותבים פונקציות מבוססות-אירועים
- איך פורסים פונקציית Cloud Run
- במדריך לפונקציות של Cloud Storage יש דוגמה לכתיבה, לפריסה ולקריאה של פונקציה עם טריגר של Cloud Storage.