במדריך הזה נלמד איך להשתמש ב-Cloud Scheduler כדי להפעיל אוטומטית Workflows, כך שתהליך עבודה יפעל לפי לוח זמנים מסוים, ובמקרה הזה כל 5 דקות.
מטרות
- ליצור ולפרוס תהליך עבודה שיכול לקבל ארגומנטים של זמן ריצה.
- יוצרים משימה ב-Cloud Scheduler שמפעילה את תהליך העבודה ומבצעת אותו כל 5 דקות, ומעבירה ארגומנטים בפורמט JSON.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- מגדירים את הסביבה ל-Cloud Scheduler, כולל יצירת אפליקציית App Engine.
מפעילים את Workflows API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים- מגדירים את מיקום ברירת המחדל שבו משתמשים במדריך הזה:
מחליפים אתgcloud config set workflows/location REGION
REGIONבמיקום נתמך של Workflows לבחירתכם. - יוצרים חשבון שירות לשימוש ב-Workflows, לדוגמה,
sa-name.gcloud iam service-accounts create sa-name
- מקצים לחשבון השירות את התפקיד
workflows.invokerכדי שלחשבון תהיה הרשאה להפעיל את תהליך העבודה:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/workflows.invoker"
מחליפים את - מקצים לחשבון השירות את התפקיד
logging.logWriter.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
PROJECT_ID במזהה הפרויקט ב- Google Cloud .
יצירת תהליך עבודה שמקבל ארגומנטים של זמן ריצה
הגדרת תהליך עבודה מורכבת מסדרה של שלבים שמתוארים באמצעות התחביר של Workflows, שאפשר לכתוב בפורמט YAML או JSON. אחרי שיוצרים תהליך עבודה, פורסים אותו כדי שיהיה זמין להרצה.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על יצירה.
מזינים
myFirstWorkflowכשם של תהליך העבודה החדש.בוחרים באזור us-east1.
בוחרים את חשבון השירות שיצרתם קודם.
לוחצים על הבא.
בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
תהליך העבודה הזה מחזיר את הודעת הפתיחה 'שלום' לאדם שהשם הפרטי ושם המשפחה שלו מועברים כארגומנטים בזמן הריצה.
לוחצים על פריסה.
gcloud
- פותחים טרמינל.
שומרים את הגדרת תהליך העבודה הבאה כקובץ YAML או JSON, כמו myFirstWorkflow.yaml או myFirstWorkflow.json.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
תהליך העבודה הזה מחזיר את הודעת הפתיחה 'שלום' לאדם שהשם הפרטי ושם המשפחה שלו מועברים כארגומנטים בזמן הריצה.
מריצים את הפקודה הבאה כדי לפרוס את תהליך העבודה:
gcloud workflows deploy myFirstWorkflow \ --location=us-east1 \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
מחליפים את
yaml_OR_jsonב-yamlאו ב-json, בהתאם לפורמט של קובץ ההגדרה של Workflows שיצרתם קודם.
תזמון תהליך העבודה
יוצרים משימה ב-Cloud Scheduler שמפעילה את תהליך העבודה באמצעות חשבון השירות שיצרתם קודם.
המסוף
נכנסים לדף Cloud Scheduler במסוף Google Cloud :
לוחצים על יצירת משימה.
מגדירים את Name לערך
my-workflow-job.בשדה Region, בוחרים באפשרות us-east1 (South Carolina).
בקטע תדירות, מזינים:
הפעולה הזו תגרום להפעלת העבודה כל 5 דקות. ההגדרה של המרווח היא בפורמט unix-cron.*/5 * * * *בשדה אזור זמן, בוחרים מדינה ואזור זמן.
לדוגמה, בוחרים בארצות הברית ובלוס אנג'לס או בשעון קיץ, החוף המערבי בארה"ב (PDT).
לוחצים על Continue.
בשדה Target type, בוחרים באפשרות HTTP.
בקטע כתובת URL, מזינים:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-east1/workflows/myFirstWorkflow/executions
משאירים את שיטת ה-HTTP כברירת המחדל POST.
מוסיפים את שתי כותרות ה-HTTP הבאות:
- שם:
Content-Typeוערך:application/octet-stream - שם:
User-Agentוערך:Google-Cloud-Scheduler
- שם:
בשדה Body (גוף), מזינים:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}הפעולה הזו מעבירה קידוד JSON של הארגומנטים של תהליך העבודה. במקרה הזה, השם הפרטי, 'Sherlock', ושם המשפחה, 'Holmes'. המירכאות הכפולות בתוך המחרוזת מסומנות בתו בריחה (escape) באמצעות לוכסנים הפוכים (\).
בקטע Auth header (כותרת אימות), בוחרים באפשרות Add OAuth token (הוספת אסימון OAuth).
מזינים את חשבון השירות שיצרתם קודם.
לא צריך לציין את ההיקף כי נעשה שימוש בברירת המחדל שלsa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform.מאשרים את כל ברירות המחדל האחרות ולוחצים על יצירה.
gcloud
כדי לתזמן משימה בשם my-workflow-job, מזינים את הפקודה הבאה:
gcloud scheduler jobs create http my-workflow-job \
--location="us-east1" \
--schedule="*/5 * * * *" \
--uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-east1/workflows/myFirstWorkflow/executions" \
--message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
--time-zone="America/Los_Angeles" \
--oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"ההגדרה של המרווח מתבצעת באמצעות פורמט unix-cron.
הדגל message-body משמש להעברת קידוד JSON של הארגומנטים של זרימת העבודה. במקרה הזה, השם הפרטי, 'Sherlock', והשם המשפחה, 'Holmes'. המירכאות הכפולות בתוך המחרוזת מסומנות בתו בריחה (escape) באמצעות לוכסנים הפוכים (\).
מעכשיו, תהליך העבודה יופעל כל 5 דקות.
מידע נוסף על הדגלים gcloud scheduler ועל אופן ההחלה של רישום שיחות כדי שכל שלב בשיחה במהלך ההפעלה של תהליך העבודה יירשם ביומן, זמין במאמר תזמון תהליך עבודה ובgcloud הפניה.
מריצים את העבודה ומאמתים את התוצאות
המסוף
נכנסים לדף Cloud Scheduler במסוף Google Cloud :
אם המשרה לא מוצגת, יכול להיות שתצטרכו לרענן את הדף.
בעמודה 'פעולות' של העבודה שנקראת
my-workflow-job, לוחצים על הפעלה מיידית.הערך של תוצאה אמור להתעדכן להצלחה.
נכנסים לדף Workflows במסוף Google Cloud :
ברשימת תהליכי העבודה, לוחצים על myFirstWorkflow כדי לפתוח את דף הפרטים שלו.
מצב ההפעלה של תהליך העבודה צריך להיות Succeeded (הושלם).
לוחצים על מזהה ההרצה של תהליך העבודה כדי לפתוח את דף הפרטים ולראות את התוצאות של תהליך העבודה בחלונית הפלט.
הפלט צריך להיות 'Hello, Sherlock Holmes!'.
gcloud
מריצים את המשימה של Cloud Scheduler כדי להפעיל את תהליך העבודה:
gcloud scheduler jobs run my-workflow-job --location="us-east1"
מאחזרים את מזהה ההרצה של תהליך העבודה:
gcloud workflows executions list myFirstWorkflow
הפלט אמור להיראות כך, עם מזהה הביצוע באותיות מודגשות:
projects/316710615161/locations/us-east1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
אחזור התוצאות של הרצת תהליך העבודה:
gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow
מחליפים את
EXECUTION_IDבמזהה הביצוע שהוחזר בשלב הקודם.הפלט אמור להיראות כך:
argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-east1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
כל הכבוד! יצרתם בהצלחה משימת Cloud Scheduler שמריצה באופן אוטומטי תהליך עבודה לפי לוח זמנים מסוים.
הסרת המשאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת המשימה ב-Cloud Scheduler
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
מסמנים את התיבה לצד המשרה.
לוחצים על מחיקה בחלק העליון של הדף ומאשרים את המחיקה.
מחיקת תהליך העבודה Workflows
נכנסים לדף Workflows במסוף Google Cloud .
בוחרים את תהליך העבודה.
לוחצים על מחיקה בחלק העליון של הדף, מקלידים את שם תהליך העבודה ומאשרים את המחיקה.
השבתת אפליקציית App Engine
השבתה של אפליקציית App Engine מפסיקה את הפעלת המופעים של האפליקציה ואת הטיפול בבקשות, אבל שומרת את הנתונים וההגדרות של האפליקציה.
עוברים לדף Application settings במסוף Google Cloud .
לוחצים על השבתת האפליקציה.
פועלים לפי ההנחיות.