טריגרים של Cloud Storage (דור ראשון)
בפונקציות Cloud Run, טריגר של Cloud Storage מאפשר לקרוא לפונקציה בתגובה לשינויים ב-Cloud Storage. כשמגדירים טריגר של Cloud Storage לפונקציה, בוחרים סוג אירוע ומציינים קטגוריה של Cloud Storage. הפונקציה תופעל בכל פעם שיתרחש שינוי באובייקט (קובץ) בקטגוריה שצוינה.
סוגי האירועים הבאים של Cloud Storage נתמכים:
| אירוע | סוג אירוע | תיאור |
|---|---|---|
| האובייקט הסופי |
|
מתרחש כשנוצר אובייקט חדש, או כשמתבצעת החלפה של אובייקט קיים ונוצרת גנרציה חדשה של האובייקט הזה. |
| האובייקט נמחק |
|
מתרחש כשמתבצעת מחיקה רכה של אובייקט. מידע נוסף זמין במאמר בנושא מחיקה רכה. |
| האובייקט הועבר לארכיון |
|
מתרחש כשגרסה פעילה של אובייקט הופכת לגרסה לא עדכנית. מידע נוסף זמין במאמר בנושא ניהול גרסאות של אובייקטים. |
| מטא-נתונים של אובייקט עודכנו |
|
מתרחש כשהמטא-נתונים של אובייקט קיים משתנים. |
כדי שפונקציה תוכל להשתמש בטריגר של Cloud Storage, צריך להטמיע אותה כפונקציה מבוססת-אירועים:
אם משתמשים בפונקציית CloudEvent, נתוני האירוע של Cloud Storage מועברים לפונקציה בפורמט CloudEvents, ומטען הנתונים של נתוני CloudEvent הוא מסוג
StorageObjectData.אם משתמשים בפונקציית רקע, מטען הייעודי של נתוני האירועים ב-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 שהטריגר יעקוב אחריה. אירועים מסוג Object finalized בקטגוריה הזו יפעילו קריאות לפונקציה. - הדגל
--retryקובע אם יתבצע ניסיון חוזר אוטומטי לקריאות פונקציה שנכשלו. מידע נוסף זמין במאמר בנושא ניסיון חוזר של פונקציות מבוססות-אירועים.
כדי להשתמש בסוגי אירועים אחרים מלבד Object finalized, משתמשים בדגלים הבאים:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
המסוף
אם פורסים באמצעות מסוף Google Cloud , אפשר להגדיר טריגר של Cloud Storage בקטע Trigger:
- בשדה סוג הטריגר, בוחרים באפשרות 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.