העברה של אירועי התראות מ-Firebase אל Workflows

טריגר Eventarc מצהיר על העניין שלכם באירוע מסוים או בקבוצת אירועים. אפשר להגדיר ניתוב אירועים על ידי ציון מסננים לטריגר, כולל מקור האירוע, וזרימת העבודה של היעד.

האירועים מועברים בפורמט CloudEvents באמצעות בקשת HTTP. שירות Workflows ממיר את האירוע לאובייקט JSON (בהתאם למפרט CloudEvents) ומעביר את האירוע להרצת זרימת העבודה כארגומנט של זמן הריצה של זרימת העבודה. צריך לוודא שגודל האירוע לא חורג ממגבלת המשאבים. אירועים שגדולים מהגודל המקסימלי של ארגומנטים ב-Workflows לא יפעילו את הביצוע של תהליך העבודה.

ההוראות האלה מסבירות איך להגדיר ניתוב אירועים כך שהפעלה של תהליך העבודה תופעל בתגובה לאירועFirebase Alerts ישיר. פרטים נוספים זמינים ברשימה של אירועים ישירים נתמכים.

בקשות לשירות שלכם מופעלות בתגובה לאירוע כששירות Firebase מפרסם התראה של Firebase.

הכנות ליצירת טריגר

לפני שיוצרים טריגר Eventarc לזרימת עבודה של יעד, צריך לבצע את המשימות הבאות.

המסוף

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    כניסה לדף לבחירת הפרויקט

  2. מפעילים את ממשקי ה-API‏ Eventarc,‏ Eventarc Publishing,‏ Workflows ו-Workflow Executions.

    הפעלת ממשקי ה-API

  3. אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להשתמש ב Firebase Alerts אירועים, צריך להפעיל את ה-API שלFirebase Alerts .

  4. אם עדיין אין לכם חשבון שירות בניהול המשתמש, אתם צריכים ליצור כזה חשבון ואז להקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים עבור זרימת עבודה יעד.

    1. נכנסים לדף Service Accounts במסוף Google Cloud .

      לדף Service accounts

    2. בוחרים את הפרויקט הרצוי.

    3. כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Google Cloud בהתאם לשם הזה.

      כותבים תיאור בשדה Service account description. לדוגמה, Service account for event trigger.

    4. לוחצים על Create and continue.

    5. כדי לספק גישה מתאימה, ברשימה Select a role בוחרים את תפקידי ניהול הזהויות והגישה (IAM) שרוצים להקצות לחשבון השירות. מידע נוסף זמין במאמר תפקידים והרשאות ליעדים של כלי Workflows.

      כדי להוסיף עוד תפקידים, לוחצים על Add another role ומוסיפים אותם אחד אחרי השני.

    6. לוחצים על Continue.

    7. כדי לסיים את יצירת החשבון, לוחצים על סיום.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מפעילים את ממשקי ה-API‏ Eventarc,‏ Eventarc Publishing,‏ Workflows ו-Workflow Executions:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להפעיל את האפשרות firestore.googleapis.com לאירועים, צריך להזין את הערך Firebase Alerts events.

  4. אם עדיין אין לכם חשבון שירות בניהול המשתמש, אתם צריכים ליצור אותו ולהקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים עבור זרימת עבודה יעד.

    1. יוצרים את חשבון השירות:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      מחליפים את SERVICE_ACCOUNT_NAME בשם של חשבון השירות. הוא צריך להיות באורך שבין 6 ל-30 תווים, והוא יכול לכלול תווים אלפאנומריים ומקפים. אחרי שיוצרים חשבון שירות, אי אפשר לשנות את השם שלו.

    2. מעניקים את התפקידים או ההרשאות הנדרשים לניהול זהויות והרשאות גישה (IAM). למידע נוסף, אפשר לעיין במאמר בנושא תפקידים והרשאות ליעדים של Workflows.

יצירת טריגר

אפשר ליצור טריגר Eventarc עם תהליך עבודה שפריסתו הושלמה כמקבל האירוע באמצעות Google Cloud CLI ‏ (gcloud או Terraform) או דרך מסוף Google Cloud .

המסוף

  1. נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .

    כניסה לדף Triggers

  2. לוחצים על Create trigger (יצירת ביטוי להפעלה).
  3. מקלידים Trigger name.

    זהו המזהה של הטריגר, והוא חייב להתחיל באות. הוא יכול להכיל עד 63 אותיות קטנות, ספרות או מקפים.

  4. בשדה Trigger type, בוחרים באפשרות Google sources.
  5. ברשימה Event provider בוחרים באפשרות Firebase Alerts.

    שימו לב: יכול להיות שבשם ספק האירועים שמופיע בGoogle Cloud מסמכי התיעוד המשויכים לא מופיעה הקידומת Cloud או Google Cloud. לדוגמה, במסוף, Memorystore for Redis נקרא Google Cloud Memorystore for Redis.

  6. ברשימה סוג האירוע, מתוך האירועים ישירים, בוחרים סוג אירוע.
  7. כדי לציין את הקידוד של מטען הייעודי (payload) של האירוע, ברשימה Event data content type (סוג התוכן של נתוני האירוע), בוחרים באפשרות application/json או באפשרות application/protobuf.

    חשוב לזכור שמטען ייעודי (payload) של אירוע בפורמט JSON גדול יותר ממטען ייעודי בפורמט Protobuf. זה עלול להשפיע על המהימנות, בהתאם ליעד של האירוע ולמגבלות שלו לגבי גודל האירוע. מידע נוסף זמין במאמר בנושא בעיות מוכרות.

  8. ברשימה Region, בוחרים באפשרות global (Global).

    מידע נוסף זמין במאמר בנושא מיקומי Eventarc.

  9. בשדה Attribute 1 (מאפיין 1), resource ID (מזהה משאב) של alerttype (סוג ההתראה) משמש כמסנן אירועים. בוחרים אופרטור למסנן הזה:
  10. בשדה ערך מאפיין 1, מזינים אחד מהערכים הבאים:
    • appDistribution.inAppFeedback: האירוע נשלח כשבודק שולח משוב בתוך האפליקציה לגבי אפליקציה מסוימת
    • appDistribution.newTesterIosDevice: האירוע נשלח כשמכשיר בדיקה חדש ל-iOS נרשם לאפליקציה מסוימת.
    • billing.planAutomatedUpdate: האירוע נשלח כשתוכנית החיוב של פרויקט Firebase מתעדכנת באופן אוטומטי. לדוגמה, כשתוכנית משודרגת או משונמכת בגלל בעיות בתשלום
    • billing.planUpdate: האירוע נשלח כשמשתמש משנה את תוכנית החיוב של פרויקט Firebase, למשל כשמצרפים חשבון לחיוב לפרויקט או מנתקים אותו ממנו.
    • crashlytics.missingSymbolFile: האירוע נשלח כש-Firebase Crashlytics קובע שאין לו את סמלי ניפוי הבאגים המתאימים כדי להמיר דוח קריסה נכנס לסמלים.
    • crashlytics.newAnrIssue: האירוע נשלח כשאפליקציה נתקלת בשגיאה חדשה מסוג 'האפליקציה לא מגיבה' (ANR) (לא עבור אירועים זהים שמתרחשים לאחר מכן)
    • crashlytics.newFatalIssue: האירוע נשלח כשיש קריסה חדשה שגורמת להפסקת פעולה באפליקציה (לא לגבי אירועים זהים שקורים לאחר מכן)
    • crashlytics.newNonfatalIssue: האירוע נשלח כשבאפליקציה מתרחשת שגיאה חדשה לא קריטית (לא עבור אירועים זהים שמתרחשים לאחר מכן)
    • crashlytics.regression: האירוע נשלח כשאפליקציה קורסת בגלל בעיה שסומנה כסגורה בגרסה קודמת של האפליקציה
    • crashlytics.stabilityDigest: האירוע נשלח כשמתקבלת הודעה על הבעיות הכי פופולריות ב-Crashlytics
    • crashlytics.velocity: האירוע נשלח כשבעיה אחת גורמת לקריסה של מספר משמעותי של סשנים באפליקציה
    • performance.threshold: האירוע נשלח כשהביצועים של מדד מסוים חוצים את ערך הסף שהוגדר
  11. אפשר גם לסנן אירועים לפי מזהה אפליקציה ספציפי ב-Firebase. לוחצים על הוספת מסנן ומציינים את מזהה האפליקציה.
  12. בוחרים את חשבון השירות שיפעיל את השירות או את תהליך העבודה.

    אפשר גם ליצור חשבון שירות חדש.

    כאן מציינים את כתובת האימייל בחשבון השירות של ניהול הזהויות והרשאות הגישה (IAM) שמשויך לטריגר, ושקודם לכן הענקתם לו תפקידים ספציפיים שנדרשים על ידי Eventarc.

  13. ברשימה Event destination, בוחרים באפשרות Workflows.
  14. בוחרים תהליך עבודה.

    זהו השם של תהליך העבודה שאליו יועברו האירועים. אירועים של הפעלת תהליך עבודה עוברים טרנספורמציה ומועברים לתהליך העבודה כארגומנטים של זמן ריצה.

    מידע נוסף מופיע במאמר בנושא יצירת טריגר לזרימות עבודה.

  15. אפשר גם ללחוץ על הוספת תווית. תוויות הן צמדי מפתח/ערך שעוזרים לכם לארגן אתGoogle Cloud המשאבים. מידע נוסף זמין במאמר מהן תוויות?
  16. לוחצים על יצירה.
  17. אחרי שיוצרים טריגר, אי אפשר לשנות את המסננים של מקור האירוע. במקום זאת, צריך ליצור טריגר חדש ולמחוק את הטריגר הישן. מידע נוסף זמין במאמר בנושא ניהול טריגרים.

gcloud

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

מחליפים את מה שכתוב בשדות הבאים:

  • TRIGGER: המזהה של הטריגר או מזהה מלא.
  • DESTINATION_WORKFLOW: המזהה של תהליך העבודה שנפרס ומקבל את האירועים מהטריגר. תהליך העבודה יכול להיות בכל אחד מהמיקומים שנתמכים ב-Workflows, והוא לא חייב להיות באותו מיקום כמו הטריגר. עם זאת, תהליך העבודה חייב להיות באותו פרויקט כמו הטריגר.
  • DESTINATION_WORKFLOW_LOCATION (אופציונלי): המיקום שבו מופעל תהליך העבודה של היעד. אם לא מציינים זאת, ההנחה היא שתהליך העבודה נמצא באותו מיקום כמו הטריגר.
  • ALERT_TYPE: סוג ההתראה ב-Firebase. יכול להיות אחד מהערכים הבאים:
    • appDistribution.inAppFeedback: האירוע נשלח כשבודק שולח משוב בתוך האפליקציה לגבי אפליקציה מסוימת
    • appDistribution.newTesterIosDevice: האירוע נשלח כשמכשיר בדיקה חדש ל-iOS נרשם לאפליקציה מסוימת.
    • billing.planAutomatedUpdate: האירוע נשלח כשתוכנית החיוב של פרויקט Firebase מתעדכנת באופן אוטומטי. לדוגמה, כשתוכנית משודרגת או משונמכת בגלל בעיות בתשלום
    • billing.planUpdate: האירוע נשלח כשמשתמש משנה את תוכנית החיוב של פרויקט Firebase, למשל כשמצרפים חשבון לחיוב לפרויקט או מנתקים אותו ממנו.
    • crashlytics.missingSymbolFile: האירוע נשלח כש-Firebase Crashlytics קובע שאין לו את סמלי ניפוי הבאגים המתאימים כדי להמיר דוח קריסה נכנס לסמלים.
    • crashlytics.newAnrIssue: האירוע נשלח כשאפליקציה נתקלת בשגיאה חדשה מסוג 'האפליקציה לא מגיבה' (ANR) (לא עבור אירועים זהים שמתרחשים לאחר מכן)
    • crashlytics.newFatalIssue: האירוע נשלח כשיש קריסה חדשה שגורמת להפסקת פעולה באפליקציה (לא לגבי אירועים זהים שקורים לאחר מכן)
    • crashlytics.newNonfatalIssue: האירוע נשלח כשבאפליקציה מתרחשת שגיאה חדשה לא קריטית (לא עבור אירועים זהים שמתרחשים לאחר מכן)
    • crashlytics.regression: האירוע נשלח כשאפליקציה קורסת בגלל בעיה שסומנה כסגורה בגרסה קודמת של האפליקציה
    • crashlytics.stabilityDigest: האירוע נשלח כשמתקבלת הודעה על הבעיות הכי פופולריות ב-Crashlytics
    • crashlytics.velocity: האירוע נשלח כשבעיה אחת גורמת לקריסה של מספר משמעותי של סשנים באפליקציה
    • performance.threshold: האירוע נשלח כשהביצועים של מדד מסוים חוצים את ערך הסף שהוגדר
    המפעיל של ALERT_TYPE חייב להיות אחת מהישויות הבאות:
    • שווה; לדוגמה, --event-filters="alerttype=appDistribution.inAppFeedback"
    • דפוס נתיב, לדוגמה --event-filters-path-pattern="alerttype=appDistribution." או --event-filters-path-pattern="alerttype=crashlytics.new".

      מידע נוסף זמין במאמר הסבר על דפוסי נתיבים.

  • EVENT_DATA_CONTENT_TYPE: (אופציונלי) הקידוד של מטען הייעודי של האירוע. הערך יכול להיות application/json או application/protobuf. קידוד ברירת המחדל הוא application/json.

    חשוב לזכור שמטען ייעודי (payload) של אירוע בפורמט JSON גדול יותר ממטען ייעודי בפורמט Protobuf. זה עשוי להשפיע על המהימנות בהתאם ליעד האירוע ולמגבלות שלו לגבי גודל האירוע. מידע נוסף זמין במאמר בנושא בעיות מוכרות.

  • SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמנוהל על ידי המשתמש.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud

הערות:

  • הדגל --location חייב להיות global. מידע נוסף זמין במאמר בנושא מיקומי Eventarc.
  • חובה להשתמש בדגלים הבאים:
    • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published"
    • --event-filters="alerttype=ALERT_TYPE" או --event-filters-path-pattern="alerttype=ALERT_TYPE"
  • אחרי שיוצרים טריגר, אי אפשר לשנות את סוג המסנן של האירועים. כדי להגדיר סוג אירוע אחר, צריך ליצור טריגר חדש.
  • אופציונלי, אפשר לסנן אירועים לפי מזהה אפליקציה ספציפי ב-Firebase באמצעות הדגל --event-filters="appid=APP_ID" וציון התאמה מדויקת.
  • הדגל --service-account משמש לציון כתובת האימייל בחשבון השירות בניהול זהויות והרשאות גישה (IAM) שמשויך לטריגר.
  • כברירת מחדל, מינויים ל-Pub/Sub שנוצרו עבור Eventarc נשמרים ללא קשר לפעילות ולא פג תוקפם. במאמר מאפייני מינוי מוסבר איך לשנות את משך הזמן של חוסר הפעילות.

דוגמה:

gcloud eventarc triggers create firealerts-workflows-trigger \
    --location=global \
    --destination-workflow=my-workflow \
    --destination-workflow-location=europe-west4 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

הפקודה הזו יוצרת טריגר בשם firealerts-workflows-trigger לאירוע שמזוהה כ-google.firebase.firebasealerts.alerts.v1.published, ולסוג ההתראה crashlytics.velocity.

Terraform

אפשר ליצור טריגר לתהליך עבודה באמצעות Terraform. פרטים נוספים מופיעים במאמר בנושא הפעלת תהליך עבודה באמצעות Eventarc ו-Terraform.

הצגת טריגר

אפשר לאשר את יצירת הטריגר באמצעות רשימת הטריגרים של Eventarc ב-Google Cloud CLI או במסוף Google Cloud .

המסוף

  1. נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .

    כניסה לדף Triggers

    בדף הזה מפורטים הטריגרים בכל המיקומים, כולל פרטים כמו שמות, אזורים, ספקי אירועים, יעדים ועוד.

  2. כדי לסנן את הטריגרים:

    1. לוחצים על Filter (מסנן) או על השדה Filter triggers (טריגרים של מסנן).
    2. ברשימה Properties, בוחרים באפשרות לסינון הטריגרים.

    אפשר לבחור נכס אחד או להשתמש באופרטור הלוגי OR כדי להוסיף עוד נכסים.

  3. כדי למיין את הטריגרים, לוחצים על מיון לצד כותרת של עמודה נתמכת.

gcloud

מריצים את הפקודה הבאה כדי להציג את הטריגרים:

gcloud eventarc triggers list --location=-

הפקודה הזו מציגה רשימה של הטריגרים בכל המיקומים, וכוללת פרטים כמו שמות, סוגים, יעדים וסטטוסים.

המאמרים הבאים