הוספת משימה של App Engine לתור של Cloud Tasks

במדריך המקוצר הזה מוסבר איך להוסיף משימת App Engine לתור של Cloud Tasks באמצעות Cloud Tasks API.

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים 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 .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. מפעילים את 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
  8. אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:

    gcloud auth application-default login

    אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.

    אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  9. התקינו את ה-CLI של Google Cloud.

  10. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  11. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  12. יוצרים או בוחרים 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 .

  13. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  14. מפעילים את 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
  15. אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:

    gcloud auth application-default login

    אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.

    אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  16. חשבון השירות של App Engine שמוגדר כברירת מחדל נוצר באופן אוטומטי כשמשתמשים ב-App Engine. אפשר להשתמש בחשבון השירות הזה כשמנסים את ההפעלה המהירה הזו. עם זאת, בהתאם להגדרת מדיניות הארגון, יכול להיות שחשבון השירות שמוגדר כברירת מחדל לא יקבל באופן אוטומטי את התפקיד Editor בפרויקט. במקרה כזה, צריך להקצות לחשבון השירות את התפקידים הבאים:
    1. אדמין של Artifact Registry‏ (roles/artifactregistry.admin)
    2. כותב של Artifact Registry Create-on-Push ‏ (roles/artifactregistry.createOnPushWriter)
    3. אדמין של Compute (roles/compute.admin)
    4. כתיבת יומנים (roles/logging.logWriter)
    5. צפייה באובייקטים באחסון (roles/storage.objectViewer)

הוספת אפליקציית App Engine

כשמטרגטים משימה של App Engine, ולפני שפורסים אפליקציה בסביבה הסטנדרטית של App Engine, צריך להוסיף אפליקציית App Engine לפרויקט.

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

    מעבר אל App Engine

  2. בתיבת הדו-שיח Welcome to App Engine (ברוכים הבאים ל-App Engine), מבצעים אחת מהפעולות הבאות:

    • אם כבר יצרתם אפליקציית App Engine ומוצגת ההודעה Your App Engine application has been created, אתם יכולים לדלג על שאר השלבים בקטע הזה ולהמשיך לשלבים בקטע Install and deploy the sample.

      או

    • אם עדיין לא יצרתם אפליקציית App Engine, לוחצים על יצירת אפליקציה וממשיכים לשאר השלבים בקטע הזה.

  3. בוחרים אזור לאפליקציה ורושמים אותו.

    שימו לב שהתפקידים europe-west ו-us-central נקראים europe-west1 ו-us-central1 בפקודות של Cloud Tasks.

  4. לא בוחרים חשבון שירות, המערכת משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-App Engine.

  5. לוחצים על הבא.

    האפליקציה מוגדרת ונוצרת. הפעולה יכולה לארוך כמה דקות.

  6. אל תורידו את Cloud SDK, אלא לחצו על אעשה זאת מאוחר יותר.

    אמורה להופיע ההודעה Your App Engine application has been created (האפליקציה שלך ב-App Engine נוצרה).

התקנה ופריסה של הדוגמה

הדוגמה של Node.js שבה נעשה שימוש בתחילת העבודה הזו מורכבת משני קבצים: ‫createTask.js מופעל באופן מקומי ככלי של שורת פקודה כדי ליצור ולהוסיף משימות לתור המשימות, ו-createTask.js נפרס ב-App Engine כשירות worker לעיבוד המשימה.server.js

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

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. עוברים לספרייה שמכילה את הקוד לדוגמה.

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. מתקינים את כל יחסי התלות באמצעות מנהל חבילות של Node.js.

    אפשר להשתמש ב-NPM:

    npm install
    

    אפשר גם להשתמש ב-Yarn:

    yarn install
    
  4. פורסים את שירות העובד (server.js) בסביבה הרגילה של App Engine.

    gcloud app deploy app.yaml
    
  5. מוודאים שהאפליקציה שמכילה את השירות פועלת.

    gcloud app browse
    
  6. בדפדפן, עוברים לקישור שקיבלתם. לדוגמה:

    https://PROJECT_ID.uc.r.appspot.com/
    

    הסמל Hello, World! אמור להופיע.

יצירת תור ב-Cloud Tasks

משתמשים בפקודה gcloud tasks queues create כדי ליצור את התור בסביבה שהכנתם.

  1. במסוף, יוצרים תור שמתעד את כל הפעולות.

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • QUEUE_NAME: שם לתור של Cloud Tasks
    • REGION: האזור שבו פרסתם את האפליקציה
  2. מחכים לאתחול התור ומוודאים שהוא נוצר בהצלחה.

    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

יוצרים משימה, מוסיפים אותה לתור שיצרתם ומעבירים אותה לשירות העובדים.

  1. מגדירים את משתני הסביבה הבאים. הלקוח משתמש במידע הזה כדי ליצור את הבקשה.

    export PROJECT_ID=PROJECT_ID
    export LOCATION_ID=REGION
    export QUEUE_ID=QUEUE_NAME
    
  2. יוצרים משימה עם מטען ייעודי (payload) של hello ומוסיפים את המשימה לתור. המטען הייעודי (payload) יכול להיות כל נתון מהבקשה ששירות העובד צריך כדי לעבד את המשימה.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. מוודאים שהמשימה בוצעה על ידי הצגת היומנים של שירות העובד.

    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

אפשר גם למחוק את המשאבים שיצרתם:

  1. מחיקת התור ב-Cloud Tasks:

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. השבתת אפליקציית App Engine.

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