אתם יכולים להשתמש ב-Cloud Tasks כדי להוסיף משימה לתור בצורה מאובטחת, כך שהיא תעובד באופן אסינכרוני על ידי שירות Cloud Run. תרחישים נפוצים לדוגמה:
- שמירת בקשות במהלך אירועי ייצור בלתי צפויים
- החלקת עליות פתאומיות בתנועה על ידי עיכוב של עבודות שלא מוצגות למשתמש
- שיפור מהירות התגובה של המשתמשים על ידי הקצאת פעולות איטיות ברקע לטיפול בשירות אחר, כמו עדכונים של מסד נתונים או עיבוד באצווה
- הגבלת קצב הקריאה לשירותי גיבוי כמו מסדי נתונים וממשקי API של צד שלישי
בדף הזה מוסבר איך להוסיף לתור משימות שמועברות בצורה מאובטחת באמצעות פרוטוקול HTTPS לשירות פרטי של Cloud Run. המאמר מתאר את ההתנהגות הנדרשת של שירות Cloud Run פרטי, את ההרשאות הנדרשות לחשבון השירות, את יצירת תור המשימות ואת יצירת המשימות.
לפני שמתחילים
מפעילים את Cloud Tasks API בפרויקט שבו אתם משתמשים.
פריסת שירות Cloud Run לטיפול במשימות
כדי לפרוס שירות שמקבל משימות שנשלחות לתור המשימות, פורסים את השירות באותו אופן כמו כל שירות אחר של Cloud Run. שירות Cloud Run צריך להחזיר קוד HTTP 200 כדי לאשר שהמשימה הושלמה בהצלחה.
מערכת Cloud Tasks תדחוף את המשימות לשירות הזה ב-Cloud Run כבקשות HTTPS.
התגובה ל-Cloud Tasks צריכה להתרחש במסגרת הזמן הקצוב לתפוגה שהוגדר. לעומסי עבודה שצריכים לפעול מעבר לזמן הקצוב לתפוגה המקסימלי של Cloud Tasks, כדאי להשתמש במשימות של Cloud Run.
יצירת תור משימות
שורת הפקודה
כדי ליצור תור משימות, משתמשים בפקודה
gcloud tasks queues create QUEUE-ID
מחליפים את QUEUE-ID בשם שרוצים לתת לתור המשימות. השם חייב להיות ייחודי בפרויקט. אם מוצגת בקשה ליצור אפליקציית App Engine בפרויקט, מזינים y כדי ליצור אותה. Cloud Tasks משתמש במיקום הזה לתור: חשוב לבחור את אותו מיקום שבו אתם משתמשים בשירות Cloud Run.
ההגדרה של תור המשימות שמוגדרת כברירת מחדל אמורה לעבוד ברוב המקרים. עם זאת, אם רוצים, אפשר להגדיר מגבלות קצב ופרמטרים של ניסיון חוזר שונים.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
כדי ליצור תור משימות, מוסיפים את הקוד הבא לקובץ .tf:
מזינים terraform apply כדי להחיל את השינויים.
יצירת חשבון שירות לשיוך למשימות
צריך ליצור חשבון שירות שישויך למשימות שנוספו לתור. לחשבון השירות הזה צריך להיות תפקיד ה-IAM Cloud Run Invoker כדי לאפשר לתור המשימות לשלוח משימות לשירות 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 Tasks.
- 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.
מוסיפים לקובץ .tf את הנתונים הבאים:
יוצרים את חשבון השירות:
ב-Cloud Run, נותנים לחשבון השירות הרשאה להפעיל את השירות:
מזינים terraform apply כדי להחיל את השינויים.
יצירת משימות HTTP עם טוקנים של אימות
כשיוצרים משימה לשליחה לתור המשימות, מציינים את הפרויקט, את המיקום, את שם התור, את כתובת האימייל של חשבון השירות שנוצר קודם כדי לשייך אותו למשימות, את כתובת ה-URL של שירות Cloud Run הפרטי שיפעיל את המשימה וכל נתון אחר שצריך לשלוח. אפשר להגדיר את הערכים האלה כקבועים, אבל ערכים כמו מזהה פרויקט, המיקום וכתובת האימייל בחשבון השירות יכולים להיות מאוחזרים באופן דינמי משרת המטא-נתונים של Cloud Run.
פרטים על גוף בקשת המשימה זמינים במסמכי העזרה של Cloud Tasks API.
שימו לב שבקשות שמכילות מטען נתונים חייבות להשתמש בשיטת HTTP PUT או POST.
לקוד שמוסיף את המשימות לתור צריכות להיות הרשאות ה-IAM הנדרשות כדי לעשות זאת, כמו התפקיד Cloud Tasks Enqueuer. אם משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Cloud Run, לקוד יהיו הרשאות ה-IAM הנדרשות.
בדוגמאות הבאות נוצרות בקשות למשימות שכוללות גם יצירה של אסימון כותרת. בדוגמאות נעשה שימוש באסימוני OIDC. כדי להשתמש בטוקן OAuth, מחליפים את הפרמטר OIDC בפרמטר OAuth המתאים לשפה כשיוצרים את הבקשה.
Python
שימו לב לקובץ requirements.txt:
Java
שימו לב לקובץ pom.xml:
המשך
Node.js
שימו לב לקובץ package.json:
המאמרים הבאים
- רישום ביומן וצפייה ביומנים
- מעקב אחרי תקינות וביצועים
- הפעלה מ-Pub/Sub
- הפעלה באמצעות HTTPS
- הפעלת שירותים לפי לוח זמנים