חשוב להשלים את ה-Codelab בנושא הגדרת API כדי להגדירGoogle Cloud פרויקט וליצור חשבון שירות להפעלת Cloud Channel API.
מומלץ להשתמש במסוף Partner Sales לניסויים לצורך ה-codelab הזה.
מומלץ להכיר את המושגים של Pub/Sub.
סקירה כללית
Cloud Channel API משתמש ב-Pub/Sub כדי לשלוח התראות על אירועים שונים שקשורים ללקוחות ולזכויות.
האפשרות הזו שימושית במיוחד ל:
- לשקף שינויים שבוצעו ישירות ב-Partner Sales Console במערכות שלכם (לדוגמה, מישהו מצוות התמיכה שלכם מבטל זכאות ל-Google Workspace).
- זיהוי אירועים קריטיים שמופעלים על ידי לקוחות שרכשו מוצרים דרככם. לדוגמה:
- לקוח של Google Workspace מאשר את התנאים וההגבלות.
- לקוח Google Workspace מאמת את הדומיין שלו.
- לקוח Google Workspace שמוסיף משתמשים עם זכאות גמישה.
- לקוח של Google Workspace מעביר את המינוי שלו.
ההגדרה של Pub/Sub כוללת את שלושת השלבים הבאים:
מפעילים את Pub/Sub API ומכינים את חשבון השירות.
יוצרים נושא Pub/Sub. הנושא הזה הוא בבעלות Channel Services, ותצטרכו לציין חשבון שירות שיכול ליצור מינוי.
יוצרים מינוי ל-Pub/Sub. אפשר לדחוף את המינוי הזה באמצעות Webhooks (השיטה המומלצת) או למשוך אותו.
במינוי push, מארחים webhook שמקבל את האירועים שמופקים על ידי שירותי הערוץ:

פורמט ההתראות
בהמשך מופיעה דוגמה להתראת Pub/Sub. נתוני ההודעה מועברים כמחרוזת JSON בקידוד base64.
{
"message": {
"attributes": {
"event_type": "LICENSE_ASSIGNMENT_CHANGED",
"subscriber_event_type": "ENTITLEMENT_EVENT"
},
"data": "eyJlbnRpdGxlbWVudF9ldmVudCI6eyJldmVudF90eXBlIjoiTElDRU5TRV9BU1NJR05NRU5UX0NIQU5HRUQiLCJlbnRpdGxlbWVudCI6ImFjY291bnRzL0MwMTIzNDU2L2N1c3RvbWVycy9TMDEyMzQ1NjcvZW50aXRsZW1lbnRzL1NhYmNkZWYxMjM0NSJ9fQ==",
"message_id": 1918124788439510,
"publish_time": "2021-01-14T01:23:45.678Z"
},
"subscription": "projects/project/subscriptions/channel-pubsub-test"
}
אלה אותם נתוני הודעה, אחרי פענוח:
{
"entitlement_event": {
"event_type": "LICENSE_ASSIGNMENT_CHANGED",
"entitlement": "accounts/C0123456/customers/S01234567/entitlements/Sabcdef12345"}
}
}
שלב 1: הפעלת Pub/Sub API והכנת חשבון השירות
כדי להפעיל את ה-codelab הזה, אתם צריכים:
- כתובת האימייל של חשבון שירות בפרויקט. הכתובת תיראה כך: service-account@project.iam.gserviceaccount.com.
- גישה לחשבון סופר-אדמין בדומיין של מפיץ (רצוי דרך Partner Sales Console לניסיון).
- מזהה החשבון. אפשר למצוא את זה בהגדרות של Partner Sales Console.
כדי להכין את חשבון השירות:
- נכנסים לקטע API Library במסוף Google Cloud ומפעילים את Pub/Sub API.
- מקצים לחשבון השירות את תפקיד ה-IAM של Pub/Sub בפרויקט.
ההרשאה
roles/pubsub.editor(שם התפקיד = Pub/Sub Editor) מספיקה לשיעור Codelab הזה, אבל יכול להיות שתרצו להשתמש בהרשאות מפורטות יותר בשילוב שלכם בסביבת הייצור. פרטים מלאים על תפקידים ב-IAM זמינים בדף בקרת גישה ל-Pub/Sub. - אם אתם בוחרים להשתמש בתפקיד בהתאמה אישית, אתם צריכים להעניק לתפקיד הזה את ההרשאה
pubsub.subscriptions.createליצירת מינויים.
יכול להיות שיהיה עיכוב אחרי הקצאת התפקידים וההרשאות האלה לחשבון.
שלב 2: יצירת הנושא בחשבון
כדי ליצור את נושא Pub/Sub, צריך להשתמש ב-method accounts.register. השיטה הזו מקבלת כפרמטר כתובת האימייל בחשבון שירות. רק חשבונות שירות שאושרו באמצעות השיטה הזו יכולים להירשם לנושא החדש.
- עוברים לתיעוד של accounts.register ולוחצים על Try it!.
- בשדה
account, מזיניםaccounts/ACCOUNT_IDומחליפים אתACCOUNT_IDבמספר החשבון. - לוחצים על Add request body parameters (הוספת פרמטרים של גוף הבקשה), בוחרים באפשרות
serviceAccountומזינים את כתובת האימייל בחשבון השירות. - לוחצים על Execute (הפעלה) ומוודאים שאתם מחוברים כסופר-אדמין בדומיין של המפיץ.
אמורה להתקבל תגובה עם קוד 200 שדומה לזו:
{
"topic": "projects/cloud-channel-pubsub/topics/C0123456-notify"
}
זהו נושא ה-Pub/Sub שבו יפורסמו האירועים.
שלב 3: נרשמים לנושא
אחרי שיוצרים את נושא Pub/Sub, צריך להגדיר איך האפליקציה צורכת אירועי שינוי. יש שתי אפשרויות:
- מינוי Push: אתם מספקים קריאה חוזרת (callback) מסוג HTTP POST. מערכת Pub/Sub תשתמש בזה כדי לשלוח לאפליקציה התראות על אירועים חדשים.
- מינוי מסוג pull: האפליקציה שלכם מבצעת מעת לעת קריאות HTTP כדי לקבל שינויים בתור.
בשיעור ה-Codelab הזה נשתמש ב-Push ונשלח את כל האירועים לפונקציית Cloud Run שתתעד אותם ב-Cloud Logging.

שלב 3א: יצירת פונקציית Cloud Run
בשלב הזה ניצור פונקציית Cloud Run שתתעד ביומן את ההודעות שהתקבלו.
- נכנסים לקטע Cloud Run functions במסוףGoogle Cloud . יכול להיות שתצטרכו להפעיל את Cloud Run functions API.
- לוחצים על Create Function (יצירת פונקציה).
- במסך הגדרות:
- משנים את שם הפונקציה. אפשר גם לבחור אזור אחר.
- בטריגר HTTP, משנים את האימות לאפשר הפעלות לא מאומתות ולוחצים על שמירה.
- רושמים את כתובת ה-URL של הטריגר. תצטרכו אותו בשלב הבא.
- לוחצים על הבא.
במסך קוד:
- בחירת סביבת זמן ריצה של Node.js
- משנים את Entry point ל-
log. - בקובץ
index.js, מחליפים את הקוד לדוגמה בקוד הבא:
exports.log = (req, res) => { if (req.body && req.body.message) { console.log(req.body); const message = req.body.message; // data is base64-encoded JSON const data = new Buffer.from(message.data, 'base64').toString(); console.log(data); } res.status(200).send('OK'); };
אפשר להמשיך לשלב הבא בזמן שפונקציית Cloud Run נפרסת.
שלב 3ב: יצירת המינוי
רק חשבונות שירות שנרשמו לנושא Channel Services (ראו שלב 2) יכולים ליצור מינוי.
אפשר לעשות זאת באמצעות קוד על ידי קריאה ל-Pub/Sub API עם פרטי הכניסה של חשבון השירות. חשוב לוודא שאתם לא מתחזים לאדמין העל של הדומיין של המפיץ שלכם – זה נדרש כשמפעילים את Cloud Channel API.
לצורך שיעור התכנות הזה, תשתמשו בכלי gcloud CLI ב-Cloud Shell.
לוחצים על Activate Cloud Shell (הפעלת Cloud Shell) בחלק העליון של Google Cloud console.
אחרי שהמעטפת מוכנה, מריצים את הפקודה הבאה. מחליפים את הערכים של
SERVICE_ACCOUNTבכתובת האימייל של חשבון השירות, אתTOPICבנושא שנוצר בשלב 2 ואתPUSH_ENDPOINTבכתובת ה-URL של הטריגר של פונקציית Cloud Run שנוצרה בשלב 3א:SERVICE_ACCOUNT=service-account@project.iam.gserviceaccount.com TOPIC=projects/cloud-channel-pubsub/topics/C0123456-notify PUSH_ENDPOINT=https://us-central1-project.cloudfunctions.net/pubsubמפעילים את חשבון השירות במעטפת:
gcloud iam service-accounts keys create sa-keys.json \ --iam-account=$SERVICE_ACCOUNT gcloud auth activate-service-account --key-file=sa-keys.jsonיוצרים את המינוי:
gcloud pubsub subscriptions create channel-pubsub-test \ --topic=$TOPIC \ --push-endpoint=$PUSH_ENDPOINT
כדי לוודא שהמינוי הוגדר, עוברים אל הקטע Pub/Sub subscriptions.
יצירת נתונים
אחרי שמסיימים את השלבים הקודמים, אפשר להתחיל לקבל נתונים.
הדרך הכי פשוטה היא ליצור לקוח במסוף תוכנית המכירות של שותפי YouTube ולהקצות לו מוצר. אם סיימתם את ה-Codelab בנושא הקצאת משתמשים ב-Workspace מקצה לקצה, תוכלו ליצור לקוח עם Google Workspace על ידי הפעלת קוד לדוגמה.
עוברים לפונקציה במסוף Google Cloud ופותחים את הכרטיסייה Logs. זו דוגמה למה שצריך לראות.

הסרת המשאבים
- מחיקת פונקציית Cloud Run
- מחיקת המינוי
הנושא ינוקה באופן אוטומטי כשלא יישארו בו מנויים.
השלבים הבאים
בשיעור Codelab הזה למדתם איך שירותי הערוצים משתמשים ב-Pub/Sub כדי לאפשר לכם ליצור שילוב באופן תגובתי, ובקנה מידה גדול.
מידע על אירועים
בהפניה ל-RPC מופיעה רשימה של האירועים שנוצרים על ידי Channel Services.
הפניית API
בשיעור Codelab הזה נעשה שימוש במסוף Google Cloud , אבל אפשר לבצע את השלבים האלה באופן פרוגרמטי. כדי לעשות את זה:
- משתמשים ב-
accounts.registerכדי ליצור את הנושא. - משתמשים בממשקי Pub/Sub API
subscriptions.createכדי ליצור את המינוי ל-Pub/Sub. - במאמרים
accounts.listSubscribersוaccounts.unregisterמפורטות נקודות קצה נוספות שאפשר להשתמש בהן בשילוב.
התחייבויות ושיטות מומלצות לשימוש ב-Pub/Sub
לא מובטח שיהיה עיכוב בין אירוע לבין ההתראה שלו. באופן דומה, לא מובטח שההתראות יוצגו בסדר מסוים. לבסוף, יכול להיות שהודעות יישלחו כמה פעמים.
שיטות מומלצות לשימוש בנקודות קצה של Push:
יכול להיות שההודעות יתעכבו, יישלחו לא לפי הסדר או יישלחו כמה פעמים, ולכן נקודת הקצה צריכה להיות אידמפוטנטית ולהשתמש ב-
customers.getוב-entitlements.getזמן הקצוב לתפוגה (timeout) שמוגדר כברירת מחדל ב-Pub/Sub לשליחת הודעות הוא 10 שניות (אפשר להגדיל את הזמן הזה דרך
ackDeadlineבמינוי ל-Pub/Sub), אבל מומלץ להשתמש בארכיטקטורה מבוססת-הודעות ולגרום לנקודת הקצה להגיב כמה שיותר מהר.אם נקודת הקצה מושבתת או מחזירה שגיאות 5xx, Pub/Sub ינסה שוב. מידע נוסף על קבלת הודעות באמצעות Push זמין במסמכי התיעוד של Pub/Sub.
אם אתם מעדיפים להשתמש בשיטת pull, תוכלו למצוא מידע על קבלת הודעות באמצעות pull במסמכי Pub/Sub.
סינון אירועים
ההתראות של Channel Services כוללות את attributes, ולכן אפשר ליצור מינויים מפורטים באמצעות יצירה של מינויים ספציפיים ל-Pub/Sub עם סינון Pub/Sub.
לדוגמה, סינון באמצעות
attributes.event_type = "LICENSE_ASSIGNMENT_CHANGED" מאפשר לעקוב אחרי כל השינויים במספר המושבים ב-Google Workspace.