קבלת אירועים באמצעות הודעות Pub/Sub‏ (ה-CLI של gcloud)

במדריך למתחילים הזה נסביר איך פורסים שירות לא מאומת ב-Cloud Run שמקבל אירועים באמצעות Pub/Sub.

במדריך למתחילים הזה:

  1. פריסת שירות לקבלת אירועים ב-Cloud Run.

  2. יוצרים טריגר Eventarc.

  3. פרסום הודעה בנושא Pub/Sub כדי ליצור אירוע, וצפייה בו ביומנים של Cloud Run.

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

יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud

  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. מפעילים את ממשקי ה-API של Cloud Run,‏ Cloud Logging,‏ Pub/Sub ו-Eventarc:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable run.googleapis.com logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com
  8. התקינו את ה-CLI של Google Cloud.

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

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

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

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

  13. מפעילים את ממשקי ה-API של Cloud Run,‏ Cloud Logging,‏ Pub/Sub ו-Eventarc:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable run.googleapis.com logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com
  14. מעדכנים את הרכיבים של Google Cloud CLI:
    gcloud components update
  15. נכנסים באמצעות החשבון:
    gcloud auth login
  16. מגדירים את משתני ההגדרה שמשמשים במדריך הזה:
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
  17. אם אתם יוצרי הפרויקט, מוקצה לכם תפקיד הבעלים הבסיסי (roles/owner). כברירת מחדל, תפקיד ניהול הזהויות והרשאות הגישה (IAM) הזה כולל את ההרשאות שנדרשות לגישה מלאה לרוב המשאבים Google Cloud, ואפשר לדלג על השלב הזה.

    אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון משתמש יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות (לאפליקציות ולעומסי עבודה ממוחשבים). מידע נוסף זמין בדף תפקידים והרשאות של יעד האירוע.

    ההרשאות הנדרשות

    כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

    להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

  18. אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator). אחרת, התפקיד הזה מוענק כברירת מחדל:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  19. מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

פריסת מקלט אירועים ב-Cloud Run

פורסים שירות Cloud Run שיקבל אירועים ויתעד אותם באמצעות תמונה מוכנה מראש, us-docker.pkg.dev/cloudrun/container/hello:

gcloud run deploy helloworld-events-pubsub-quickstart \
    --image=us-docker.pkg.dev/cloudrun/container/hello \
    --allow-unauthenticated

כשתראו את כתובת ה-URL של השירות, סימן שהפריסה הושלמה.

יצירת טריגר Eventarc

טריגר האירוע שולח הודעות לשירות לקבלת אירועים שנפרס ב-Cloud Run כשמתפרסמת הודעה בנושא Pub/Sub.

  1. יוצרים טריגר להאזנה להודעות Pub/Sub:

    נושא חדש ב-Pub/Sub

    gcloud eventarc triggers create events-pubsub-trigger \
        --destination-run-service=helloworld-events-pubsub-quickstart \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
    

    פעולה זו יוצרת נושא חדש ב-Pub/Sub וטריגר בשם events-pubsub-trigger.

    נושא קיים ב-Pub/Sub

    gcloud eventarc triggers create events-pubsub-trigger \
        --destination-run-service=helloworld-events-pubsub-quickstart \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID
    

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • TOPIC_ID: המזהה של נושא ה-Pub/Sub הקיים

    כך נוצר טריגר בשם events-pubsub-trigger לנושא Pub/Sub הקיים.

    שימו לב: כשיוצרים טריגר Eventarc בפעם הראשונה בפרויקט Google Cloud , יכול להיות שיהיה עיכוב בהקצאת סוכן השירות של Eventarc. בדרך כלל אפשר לפתור את הבעיה הזו על ידי ניסיון ליצור את הטריגר מחדש. מידע נוסף זמין במאמר בנושא שגיאות שקשורות לסירוב הרשאה.

  2. מוודאים שהטריגר נוצר בהצלחה:

    gcloud eventarc triggers list --location=us-central1
    

    ה-events-pubsub-trigger מופיע עם יעד שהוא שירות Cloud Run, ‏ helloworld-events-pubsub-quickstart.

יצירה והצגה של אירוע בנושא Pub/Sub

אפשר ליצור אירוע Eventarc על ידי פרסום הודעה בנושא Pub/Sub.

  1. מאתרים ומגדירים את נושא ה-Pub/Sub כמשתנה סביבה:

    export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \
        --format='value(transport.pubsub.topic)')
    
  2. מפרסמים הודעה בנושא Pub/Sub כדי ליצור אירוע:

    gcloud pubsub topics publish $RUN_TOPIC --message "Hello World!"
    

    האירוע מנותב לשירות Cloud Run, שרושם ביומן את הודעת האירוע.

  3. כדי לראות את הרשומות ביומן שקשורות לאירוע שנוצר על ידי השירות, מריצים את הפקודה הבאה:

    gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.pubsub.topic.v1.messagePublished"'
    
  4. מחפשים רשומה ביומן שדומה ל:

    jsonPayload:
    ...
    message: 'Received event of type google.cloud.pubsub.topic.v1.messagePublished.
        Event data: Hello World!'
    

כל הכבוד! הצלחתם לפרוס שירות לקבלת אירועים ב-Cloud Run, ליצור טריגר Eventarc, ליצור אירוע מ-Pub/Sub ולצפות בו ביומנים של Cloud Run.

הסרת המשאבים

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

אתם יכולים:

  1. מחיקת שירות Cloud Run.

  2. מחיקת טריגר Eventarc

    הפעולה הזו תמחק גם את נושא ה-Pub/Sub המשויך.

אפשר גם למחוק את הפרויקט Google Cloud כדי למנוע חיובים. כשמוחקים פרויקט ב- Google Cloud , החיוב על כל המשאבים שנעשה בהם שימוש באותו פרויקט מופסק.

כדי למחוק Google Cloud פרויקט:

gcloud projects delete PROJECT_ID

אם אתם מתכננים להיעזר במספר מדריכי לימוד או מדריכים למתחילים, מומלץ להשתמש שוב באותו פרויקט כדי לא לחרוג ממכסות הפרויקטים.

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