אפשר להשתמש ב-Cloud Scheduler כדי להפעיל שירות Cloud Run בצורה מאובטחת לפי לוח זמנים. זה דומה לשימוש במשימות cron.
תרחישי שימוש אפשריים:
- ביצוע גיבויים על בסיס זמן
- ביצוע משימות ניהוליות חוזרות, כמו:
- יצירה מחדש של Sitemap
- מחיקת נתונים, תוכן, הגדרות או גרסאות קודמות
- סנכרון תוכן בין מערכות נתונים
- עיבוד התראות יומיות באימייל
- אימות הגישה לשירותים במורד הזרם ודיווח עליה
- יצירת מסמכים, כמו חשבונות
בדף הזה מוסבר איך להשתמש ב-Cloud Scheduler עם Cloud Run בצורה מאובטחת באותו Google Cloud פרויקט.
לפני שמתחילים
מפעילים את Cloud Scheduler API בפרויקט שבו אתם משתמשים.
יצירה ופריסה של השירות
כדי ליצור ולפרוס:
בשירות, מטמיעים את העבודה שרוצים להפעיל לפי לוח זמנים.
שימו לב איזה סוג בקשה השירות מצפה לקבל ממנו את בקשות העבודה, לדוגמה,
GETאוPOST. כשיוצרים את המשימה המתוזמנת שמפעילה את השירות, צריך לציין את שיטת ה-HTTP שתואמת לשיטה הזו.כשפורסים את השירות שבו אתם משתמשים עם Cloud Scheduler, חשוב לבחור באפשרות ** דרוש אימות**. לא לאפשר גישה לכולם.
בדוגמה הבאה אפשר לראות איך פורסים שירות Cloud Run באמצעות Terraform:
מחליפים את us-docker.pkg.dev/cloudrun/container/hello בהפניה לקובץ אימג' של קונטיינר משלכם.
יצירת חשבון שירות ל-Cloud Scheduler
צריך ליצור חשבון שירות כדי לשייך אותו ל-Cloud Scheduler, ולתת לחשבון השירות הזה הרשאה להפעיל את שירות Cloud Run. אפשר להשתמש בחשבון שירות קיים כדי לייצג את Cloud Scheduler, או ליצור חשבון חדש.
כדי ליצור חשבון שירות ולהעניק לו הרשאה להפעיל את שירות Cloud Run:
המסוף
נכנסים לדף Service Accounts במסוף Google Cloud .
בוחרים פרויקט.
נותנים לחשבון השירות שם שיוצג במסוף Google Cloud .
המסוף יוצר מזהה לחשבון השירות על סמך השם הזה. Google Cloud עורכים את המזהה לפי הצורך. אי אפשר יהיה לשנות את המזהה בשלב מאוחר יותר.
אופציונלי: מזינים תיאור לחשבון השירות.
לוחצים על Create and continue.
אופציונלי: לוחצים על השדה בחירת תפקיד.
בוחרים באפשרות Cloud Run > Cloud Run Invoker.
לוחצים על סיום.
שורת הפקודה
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
החלפה
- SERVICE_ACCOUNT_NAME עם שם באותיות קטנות שהוא ייחודי בתוך הפרויקט Google Cloud , לדוגמה
my-invoker-service-account-name. - DISPLAYED_SERVICE_ACCOUNT_NAME בשם שרוצים להציג לחשבון השירות הזה, לדוגמה, במסוף, למשל,
My Invoker Service Account.
- SERVICE_ACCOUNT_NAME עם שם באותיות קטנות שהוא ייחודי בתוך הפרויקט Google Cloud , לדוגמה
ב-Cloud Run, נותנים לחשבון השירות הרשאה להפעיל את השירות:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
החלפה
- SERVICE בשם השירות שרוצים להפעיל באמצעות Cloud Scheduler.
- SERVICE_ACCOUNT_NAME בשם של חשבון השירות.
- PROJECT_ID במזהה הפרויקט ב- Google Cloud .
נותנים לחשבון השירות גישה לפרויקט כדי שתהיה לו הרשאה לבצע פעולות ספציפיות במשאבים בפרויקט:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
החלפה
RESOURCE_ID: מזהה הפרויקט ב- Google Cloud .
PRINCIPAL: המזהה של החשבון הראשי או של המשתמש בקבוצה. בדרך כלל בצורה הבאה: PRINCIPAL_TYPE:ID. לדוגמה:
user:my-user@example.com. בדף העזר בנושא קישורי מדיניות תוכלו למצוא רשימה מלאה של הערכים שיכולים להיות ל-PRINCIPAL.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי ליצור חשבון שירות באמצעות Terraform:
יצירת משימה ב-Cloud Scheduler
תצטרכו ליצור משימה שמפעילה את השירות בזמנים שצוינו. אפשר להשתמש במסוף או בשורת הפקודה:
כדי ליצור עבודה, אפשר להשתמש במסוף או בשורת הפקודה gcloud. לוחצים על הכרטיסייה המתאימה:
המסוף
נכנסים לדף של Cloud Scheduler במסוף.
לוחצים על Create job (יצירת משימה).

מזינים שם למשימה.
מציינים את התדירות או את מרווח הזמן בין ההרצות של המשימה באמצעות מחרוזת הגדרה. לדוגמה, המחרוזת
0 */3 * * *מריצה את העבודה כל 3 שעות. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-crontab.מידע נוסף זמין במאמר הגדרת לוחות זמנים של משימות.
מהרשימה הנפתחת, בוחרים את אזור הזמן שבו תתבצע התדירות של העבודה.
מציינים את היעד
HTTP:מציינים את כתובת ה-URL המוגדרת במלואה של השירות, לדוגמה
https://myservice-abcdef-uc.a.run.app. העבודה תשלח בקשות לכתובת ה-URL הזו.מציינים את שיטת ה-HTTP: השיטה צריכה להיות זהה לשיטה שהוגדרה בשירות Cloud Run שפרסתם קודם. ברירת המחדל היא
POST.אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כשבוחרים ב-method HTTP
POSTאוPUT.לוחצים על עוד כדי להציג את הגדרות האימות.
בתפריט הנפתח, בוחרים באפשרות הוספת טוקן OIDC.
בשדה Service account, מעתיקים את כתובת האימייל של חשבון השירות שיצרתם קודם.
בשדה קהל, מעתיקים את כתובת ה-URL המלאה של השירות.
לוחצים על יצירה כדי ליצור ולשמור את העבודה.
שורת הפקודה
כדי לגשת לשירות מאומת ב-Cloud Run מ-Cloud Scheduler, צריך להשתמש באימות OIDC. אימות OIDC כולל את חשבון השירות ואת דגלי הקהל. מידע נוסף זמין במאמר שימוש באימות עם HTTP Target.
כדי ליצור את המשימה של Cloud Scheduler:
gcloud scheduler jobs create http test-job --schedule "5 * * * *"
--http-method=HTTP-METHOD
--uri=SERVICE-URL
--oidc-service-account-email=SERVICE-ACCOUNT-EMAIL
--oidc-token-audience=SERVICE-URL
החלפה
- HTTP-METHOD עם שיטת ה-HTTP (כלומר, GET, POST, PUT וכו').
- SERVICE-URL מחליפים בכתובת ה-URL של השירות.
- SERVICE-ACCOUNT-EMAIL מחליפים בכתובת האימייל של חשבון השירות.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי ליצור משימה של Cloud Scheduler בשביל שירות Cloud Run:
השירות שלכם ב-Cloud Run יופעל באמצעות בקשה של משימת Cloud Scheduler בתדירות שהגדרתם. כדי לוודא זאת ולעקוב אחרי הפעולה, אפשר לבדוק את היומנים של השירות הזה.