תזמון של פונקציית Cloud Run מבוססת-אירועים

במדריך הזה מוסבר איך להפעיל פונקציה מבוססת-אירועים ב-Cloud Run באמצעות Cloud Scheduler, על ידי טירגוט של נושא Pub/Sub. משתמשים בפונקציה מבוססת-אירועים כשרוצים שהפונקציה תופעל ישירות בתגובה לאירועים ב Google Cloud פרויקט, כמו הודעות בנושא Pub/Sub או שינויים בקטגוריה של Cloud Storage.

שימו לב שאפשר גם לתזמן פונקציית HTTP על ידי הגדרת יעד לנקודת הקצה של ה-HTTP של הפונקציה. משתמשים בפונקציית HTTP כשרוצים שלפונקציה תהיה נקודת קצה (endpoint) של כתובת URL והיא תגיב לבקשות HTTP, למשל עבור webhook. מידע נוסף זמין במאמר סוגי פונקציות ב-Cloud Run.

תזמון ההפעלה של פונקציית Cloud Run הוא תרחיש נפוץ לשימוש ב-Cloud Scheduler. במדריך הזה תלמדו:

  1. יוצרים פונקציית Cloud Run פשוטה שנרשמת לנושא Pub/Sub.
  2. יוצרים משימה ב-Cloud Scheduler שמפרסמת הודעה בנושא Pub/Sub.
  3. מריצים את המשימה של Cloud Scheduler.
  4. מוודאים שהפונקציה של Cloud Run הופעלה על ידי המשימה של Cloud Scheduler.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  9. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  10. חשוב לשים לב שצריך להקצות את התפקיד Cloud Run Invoker כי בפונקציות Cloud Run (דור שני), הרשאות ההפעלה זמינות באמצעות ניהול שירות Cloud Run הבסיסי.

  11. כברירת מחדל, פונקציות Cloud Run משתמשות בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine שנוצר אוטומטית, בתור חשבון השירות של זמן הריצה. אתם יכולים להשתמש בחשבון השירות הזה כדי לנסות את המדריך הזה. עם זאת, בהתאם להגדרת מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל לא יקבל אוטומטית את התפקיד 'עריכה' בפרויקט. במקרה כזה, צריך להעניק לחשבון השירות את התפקידים הבאים:
    1. כותב של Artifact Registry ‏ (roles/artifactregistry.writer)
    2. כתיבת יומנים (roles/logging.logWriter)
    3. צפייה באובייקטים באחסון (roles/storage.objectViewer)

יצירת פונקציית Cloud Run מבוססת-אירועים

יצירת פונקציה מבוססת-אירועים שמופעלת ישירות בתגובה לאירועים בתוך פרויקט Google Cloud ; במקרה הזה, הודעה שפורסמה בנושא Pub/Sub.

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .

    כניסה לדף Cloud Run functions

  2. לוחצים על Create function (יצירת פונקציה).

  3. בקטע Basics (פרטים בסיסיים), מבצעים את הפעולות הבאות:

    1. ברשימה Environment בוחרים באפשרות דור שני.
    2. מזינים שם לפונקציה.
    3. ברשימה Region, בוחרים אזור.
  4. בקטע Trigger (טריגר), מבצעים את הפעולות הבאות:

    1. ברשימה Trigger type, בוחרים באפשרות Cloud Pub/Sub.
    2. ברשימה Cloud Pub/Sub topic, בוחרים נושא קיים או לוחצים על Create a topic כדי ליצור נושא חדש. חשוב לזכור את שם הנושא, כי תצטרכו להשתמש בו בשלב הבא.
    3. לוחצים על אפשרויות נוספות.

      תיפתח החלונית Eventarc trigger.

  5. בחלונית Eventarc trigger:

    1. אם מוצגת בקשה לאפשר לשירות Pub/Sub ליצור את אסימוני הזהות שהוא צריך כדי להפעיל את הפונקציה, לוחצים על Grant (אישור).
    2. ברשימה Service account, בוחרים את חשבון השירות שיצרתם קודם.
    3. מאשרים את שאר הגדרות ברירת המחדל.
    4. לוחצים על Save trigger.

      החלונית Eventarc trigger נסגרת.

  6. מאשרים את שאר הגדרות ברירת המחדל ולוחצים על הבא.

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

יצירת משימה ב-Cloud Scheduler

יוצרים משימה של Cloud Scheduler עם יעד Pub/Sub.

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

    כניסה ל-Cloud Scheduler

  2. לוחצים על Create job.

  3. מזינים שם למשימה.

  4. ברשימה Region, בוחרים אזור.

  5. מציינים את התדירות של העבודה בפורמט unix-cron:

    30 16 * * 7
    

    מידע נוסף זמין במאמר בנושא פורמט של משימת Cron ואזור זמן.

  6. ברשימה אזור זמן, בוחרים אזור זמן.

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

  8. ברשימה Target type, בוחרים באפשרות Pub/Sub.

  9. בוחרים את נושא ה-Pub/Sub שיצרתם קודם.

  10. בשדה גוף ההודעה, מזינים מחרוזת שתישלח לנושא היעד ב-Pub/Sub. לדוגמה: "Hello world!"

  11. לוחצים על יצירה.

יצרתם משימת cron ששולחת הודעה לנושא Pub/Sub בשעה 16:30 בימי ראשון. פונקציית Cloud Run שלכם רשומה לנושא הזה.

הרצת המשימה ב-Cloud Scheduler

עכשיו אפשר להריץ את העבודה שיצרתם.

  1. במסוף Google Cloud , עוברים לדף Cloud Scheduler.

    כניסה ל-Cloud Scheduler

  2. מסמנים את התיבה של העבודה שיצרתם ולוחצים על Force run (הפעלה בכוח).

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

  3. אחרי שהעבודה תפעל, בסטטוס של ההרצה האחרונה יופיע Success.

אימות התוצאות בפונקציות Cloud Run

אתם יכולים לוודא שפונקציית Cloud Run מופעלת ומוצאת לפועל בהצלחה על ידי משימת ה-cron.

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .

    כניסה לדף Cloud Run functions

  2. לוחצים על שם הפונקציה.

    נפתח הדף Function details (פרטי הפונקציה), ובגרף Invocations/Second (הפעלות/שנייה) מוצגת ההפעלה הראשונה של הפונקציה.

  3. לוחצים על הכרטיסייה יומנים.

    אמורה להופיע רשומה ביומן שדומה לHello, YOUR_STRING!

הסרת המשאבים

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

מחק את הפרויקט

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת משאבי הדרכה

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

    כניסה ל-Cloud Scheduler

  2. מסמנים את התיבה לצד המשרה.

  3. לוחצים על מחיקה ומאשרים את המחיקה.

  4. נכנסים לדף Pub/Sub במסוף Google Cloud .

    מעבר אל Pub/Sub

  5. מסמנים את התיבה לצד הנושא.

  6. לוחצים על מחיקה ומאשרים את המחיקה.

  7. נכנסים לדף Cloud Run functions במסוף Google Cloud .

    כניסה לדף Cloud Run functions

  8. מסמנים את התיבה לצד הפונקציה.

  9. לוחצים על מחיקה ומאשרים את המחיקה.

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

    לדף Service accounts

  11. מסמנים את התיבה ליד חשבון השירות שיצרתם.

  12. לוחצים על מחיקה ומאשרים את המחיקה.

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