הוספת משימה של App Engine לתור של Cloud Tasks
במדריך המקוצר הזה מוסבר איך להוסיף משימת App Engine לתור של Cloud Tasks באמצעות Cloud Tasks API.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Cloud Resource Manager API ואת Cloud Tasks API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Cloud Resource Manager API ואת Cloud Tasks API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
- חשבון השירות של App Engine שמוגדר כברירת מחדל נוצר באופן אוטומטי כשמשתמשים ב-App Engine. אפשר להשתמש בחשבון השירות הזה כשמנסים את ההפעלה המהירה הזו. עם זאת, בהתאם להגדרת מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל לא יקבל באופן אוטומטי את התפקיד
Editorבפרויקט. במקרה כזה, צריך להקצות לחשבון השירות את התפקידים הבאים:- אדמין של Artifact Registry (
roles/artifactregistry.admin) - כותב של Artifact Registry Create-on-Push (
roles/artifactregistry.createOnPushWriter) - אדמין של Compute (
roles/compute.admin) - כתיבת יומנים (
roles/logging.logWriter) - צפייה באובייקטים באחסון (
roles/storage.objectViewer)
- אדמין של Artifact Registry (
הוספת אפליקציית App Engine
כשמטרגטים משימה של App Engine, ולפני שפורסים אפליקציה בסביבה הסטנדרטית של App Engine, צריך להוסיף אפליקציית App Engine לפרויקט.
נכנסים לדף App Engine במסוף Google Cloud .
בתיבת הדו-שיח Welcome to App Engine (ברוכים הבאים ל-App Engine), מבצעים אחת מהפעולות הבאות:
אם כבר יצרתם אפליקציית App Engine ומוצגת ההודעה Your App Engine application has been created, אתם יכולים לדלג על שאר השלבים בקטע הזה ולהמשיך לשלבים בקטע Install and deploy the sample.
או
אם עדיין לא יצרתם אפליקציית App Engine, לוחצים על יצירת אפליקציה וממשיכים לשאר השלבים בקטע הזה.
בוחרים אזור לאפליקציה ורושמים אותו.
שימו לב שהתפקידים
europe-westו-us-centralנקראיםeurope-west1ו-us-central1בפקודות של Cloud Tasks.לא בוחרים חשבון שירות, המערכת משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-App Engine.
לוחצים על הבא.
האפליקציה מוגדרת ונוצרת. הפעולה יכולה לארוך כמה דקות.
אל תורידו את Cloud SDK, אלא לחצו על אעשה זאת מאוחר יותר.
אמורה להופיע ההודעה Your App Engine application has been created (האפליקציה שלך ב-App Engine נוצרה).
התקנה ופריסה של הדוגמה
הדוגמה של Node.js שבה נעשה שימוש בתחילת העבודה הזו מורכבת משני קבצים:
createTask.js מופעל באופן מקומי ככלי של שורת פקודה כדי ליצור ולהוסיף משימות לתור המשימות, ו-createTask.js נפרס ב-App Engine כשירות worker לעיבוד המשימה.server.js
במסוף, משכפלים את מאגר האפליקציה לדוגמה למכונה המקומית.
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitעוברים לספרייה שמכילה את הקוד לדוגמה.
cd nodejs-docs-samples/cloud-tasks/snippetsמתקינים את כל יחסי התלות באמצעות מנהל חבילות של Node.js.
אפשר להשתמש ב-NPM:
npm installאפשר גם להשתמש ב-Yarn:
yarn installפורסים את שירות העובד (
server.js) בסביבה הרגילה של App Engine.gcloud app deploy app.yamlמוודאים שהאפליקציה שמכילה את השירות פועלת.
gcloud app browseבדפדפן, עוברים לקישור שקיבלתם. לדוגמה:
https://PROJECT_ID.uc.r.appspot.com/הסמל
Hello, World!אמור להופיע.
יצירת תור ב-Cloud Tasks
משתמשים בפקודה gcloud tasks queues create כדי ליצור את התור בסביבה שהכנתם.
במסוף, יוצרים תור שמתעד את כל הפעולות.
gcloud tasks queues create QUEUE_NAME \ --log-sampling-ratio=1.0 \ --location=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
QUEUE_NAME: שם לתור של Cloud Tasks -
REGION: האזור שבו פרסתם את האפליקציה
-
מחכים לאתחול התור ומוודאים שהוא נוצר בהצלחה.
gcloud tasks queues describe QUEUE_NAME \ --location=REGIONהפלט אמור להיראות כך:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
הוספת משימה לתור ב-Cloud Tasks
יוצרים משימה, מוסיפים אותה לתור שיצרתם ומעבירים אותה לשירות העובדים.
מגדירים את משתני הסביבה הבאים. הלקוח משתמש במידע הזה כדי ליצור את הבקשה.
export PROJECT_ID=PROJECT_ID export LOCATION_ID=REGION export QUEUE_ID=QUEUE_NAMEיוצרים משימה עם מטען ייעודי (payload) של
helloומוסיפים את המשימה לתור. המטען הייעודי (payload) יכול להיות כל נתון מהבקשה ששירות העובד צריך כדי לעבד את המשימה.node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID helloמוודאים שהמשימה בוצעה על ידי הצגת היומנים של שירות העובד.
gcloud app logs readהיומנים אמורים להיראות כך:
2024-06-20 15:00:00 default[20240620t143852] "POST /log_payload HTTP/1.1" 200 2024-06-20 15:00:00 default[20240620t143852] App listening on port 8081 2024-06-20 15:00:00 default[20240620t143852] Press Ctrl+C to quit. 2024-06-20 15:00:00 default[20240620t143852] Received task with payload: hello
הסרת המשאבים
כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Google Cloud Google Cloud
כדי למחוק פרויקט Google Cloud :
gcloud projects delete PROJECT_ID
אפשר גם למחוק את המשאבים שיצרתם:
מחיקת התור ב-Cloud Tasks:
gcloud tasks queues delete QUEUE_NAME \ --location=REGION