במאמר הזה מוסבר איך ליצור מינוי דחיפה. כדי ליצור מינוי דחיפה, אתם יכולים להשתמש במסוףGoogle Cloud , ב-Google Cloud CLI, בספריית הלקוח או ב-Pub/Sub API.
לפני שמתחילים
- מידע נוסף על מינויים
- הסבר על האופן שבו פועלים מינויים לדחיפת הודעות.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת מינוי דחיפה, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד Pub/Sub Editor (roles/pubsub.editor) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירת מינוי דחיפה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מינוי דחיפה, צריך את ההרשאות הבאות:
-
pubsub.subscriptions.createבפרויקט -
pubsub.topics.attachSubscriptionבנושא
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מינויים בין פרויקטים
אם יוצרים מינוי בפרויקט אחד לנושא בפרויקט אחר, צריכה להיות לכם הרשאת pubsub.subscriptions.create בפרויקט שבו אתם יוצרים את המינוי, והרשאת pubsub.topics.attachSubscription בנושא.
מאפייני מינוי דחיפה
מינויי דחיפה תומכים בכל מאפייני המינוי הנפוצים. בקטעים הבאים מתוארים מאפיינים שספציפיים למינויי דחיפה.
נקודות קצה
כתובת ה-URL של נקודת הקצה (חובה). כתובת HTTPS שנגישה לכולם. לשרת של נקודת הקצה של ה-push צריך להיות אישור SSL תקף שנחתם על ידי רשות אישורים. שירות Pub/Sub מעביר הודעות לנקודות קצה של Push מ אותו Google Cloud אזור שבו שירות Pub/Sub מאחסן את ההודעות. שירות Pub/Sub מעביר הודעות מאותו אזור Google Cloud כמיטב היכולת.
אם המנויים משתמשים בחומת אש, הם לא יכולים לקבל בקשות לשליחת הודעות פוש. כדי לקבל בקשות push, צריך להשבית את חומת האש ולאמת את אסימון האינטרנט מסוג JSON (JWT) שמשמש בבקשה. אם למנוי יש חומת אש, יכול להיות שתקבלו
403 permission deniedשגיאה.ב-Pub/Sub לא נדרשת הוכחת בעלות על דומיינים של כתובות URL של מינויים מסוג push. אם הדומיין שלכם מקבל בקשות POST לא צפויות מ-Pub/Sub, אתם יכולים לדווח על חשד לניצול לרעה.
אימות
מפעילים אימות. כשההגדרה הזו מופעלת, הודעות שנשלחות מ-Pub/Sub לנקודת הקצה של ה-push כוללות כותרת הרשאה שמאפשרת לנקודת הקצה לאמת את הבקשה. מנגנוני אימות והרשאה אוטומטיים זמינים לנקודות קצה של פונקציות App Engine Standard ו-Cloud Run שמתארחות באותו פרויקט כמו המינוי.
הגדרת האימות של מינוי דחיפה מאומת מורכבת מחשבון שירות בניהול המשתמש, ומפרמטרים של קהל שמצוינים בקריאה ל-create, ל-patch או ל-ModifyPushConfig. צריך גם להקצות תפקיד ספציפי לחשבון שירות, כמו שמוסבר בקטע הבא.
קהל. מחרוזת אחת, לא תלוית-רישיות, שמשמשת את ה-webhook לאימות קהל היעד של הטוקן הספציפי הזה.
חשבון שירות. מערכת Pub/Sub יוצרת באופן אוטומטי חשבון שירות בפורמט
service-{PROJECT_NUMBER}@gcp-sa-pubsub..
דרישות מוקדמות להפעלת אימות
חשבון השירות בניהול המשתמשים הוא חשבון השירות שמשויך למינוי לדחיפה. החשבון הזה משמש כטענת email של אסימון ה-JWT (JSON Web Token) שנוצר. זו רשימת הדרישות לחשבון השירות:
חשבון השירות בניהול המשתמשים צריך להיות באותו פרויקט כמו מינוי ה-push.
למשתמש שיוצר או משנה את מינוי הדחיפה צריכה להיות ההרשאה
iam.serviceAccounts.actAsבחשבון השירות שמנוהל על ידי המשתמש כדי לצרף את חשבון השירות למינוי הדחיפה. מידע נוסף מופיע במאמר צירוף חשבונות שירות למשאבים.הרשאות נדרשות: צריך להעניק לחשבון השירות הזה את ההרשאה
iam.serviceAccounts.getOpenIdToken(שכלולה בתפקידroles/iam.serviceAccountTokenCreator) כדי לאפשר ל-Pub/Sub ליצור אסימוני JWT בשביל חשבון השירות שצוין, לצורך אימות של בקשות push.
פריקת המטען הייעודי (payload)
האפשרות Enable payload unwrapping (הפעלת פריקת מטען ייעודי) מסירה מהודעות Pub/Sub את כל המטא-נתונים של ההודעה, חוץ מנתוני ההודעה. במקרה של ביטול העטיפה של המטען הייעודי (payload), נתוני ההודעה מועברים ישירות כגוף ה-HTTP.
אפשר גם להפעיל את האפשרות כתיבת מטא-נתונים. האפשרות כתיבת מטא-נתונים מוסיפה בחזרה לכותרת הבקשה מטא-נתונים של הודעות שהוסרו בעבר.
משלוח לכתובות VPC פרטיות
שירות Pub/Sub פועל מחוץ לרשתות VPC ולא יכול לשלוח הודעות ישירות לכתובות VPC פרטיות. עם זאת, אתם יכולים להשתמש ב-Eventarc כדי לנתב הודעות לשירותים ב-VPC. שירות Pub/Sub יכול לשלוח הודעות לטריגר של Eventarc, שיכול להעביר אותן לשירות ב-VPC, כמו שירות Cloud Run או הפעלה של Workflows. מידע נוסף זמין במסמכי התיעוד של Eventarc.
VPC Service Controls
בפרויקט שמוגן על ידי VPC Service Controls, שימו לב למגבלות הבאות לגבי מינויי דחיפה:
אפשר ליצור רק מינויים חדשים לשליחת הודעות Push שבהם נקודת הקצה (endpoint) של ה-Push מוגדרת לשירות Cloud Run עם כתובת URL של
run.appכברירת מחדל או להפעלה של Workflows. דומיינים מותאמים אישית לא פועלים.כשמנתבים אירועים דרך Eventarc ליעדים של Workflows שבהם נקודת הקצה של הדחיפה מוגדרת להפעלה של Workflows, אפשר ליצור מינויים חדשים לדחיפה רק דרך Eventarc.
אי אפשר לעדכן מינויי דחיפה קיימים. מינויי הדחיפה האלה ממשיכים לפעול, אבל הם לא מוגנים על ידי VPC Service Controls.
יצירת מינוי דחיפה
הדוגמאות הבאות ממחישות איך ליצור מינוי עם מסירת דחיפה, באמצעות הגדרות ברירת המחדל שסופקו.
כברירת מחדל, המינויים משתמשים בשליחת נתונים בשיטת pull, אלא אם מגדירים במפורש הגדרות push, כמו בדוגמאות הבאות.
המסוף
כדי ליצור מינוי דחיפה, פועלים לפי השלבים הבאים:
נכנסים לדף Subscriptions במסוף Google Cloud .
לוחצים על יצירת מינוי.
כותבים שם בשדה Subscription ID.
במאמר הנחיות למתן שמות לנושאים או למינויים מוסבר איך נותנים שם למינוי.
ברשימה Pub/Sub topic, בוחרים נושא שהמינוי יקרא ממנו.
בקטע סוג המשלוח, בוחרים באפשרות Push (דחיפה).
בשדה כתובת URL של נקודת הקצה, מזינים את כתובת ה-URL של נקודת הקצה.
אופציונלי: כדי להפעיל אימות, פועלים לפי השלבים הבאים:
- לוחצים על הפעלת אימות.
- ברשימה Service account, בוחרים את חשבון השירות שדרכו תתבצע האימות.
- אופציונלי: בשדה קהל, מזינים קהל.
למידע נוסף, ראו אימות למינויי דחיפה.
אופציונלי: כדי להפעיל את האפשרות פריקת מטען ייעודי (payload), בוחרים באפשרות הפעלת פריקת מטען ייעודי (payload).
כדי לשמור את המטא-נתונים של ההודעה בכותרת הבקשה, בוחרים גם באפשרות Write metadata. האפשרות הזו גם מגדירה כותרת
Content-Typeלהודעות.אופציונלי: בקטע Transforms, מוסיפים Single Message Transforms (SMTs) אחד או יותר. מידע נוסף זמין במאמר יצירת מינוי עם SMT.
אופציונלי: בשדה Filter, מזינים ביטוי סינון כדי לסנן הודעות מהמינוי. למידע נוסף, ראו סינון הודעות ממינוי.
בקטע Retry policy (מדיניות ניסיון חוזר), בוחרים באחת מהאפשרויות. מידע נוסף זמין במאמר בנושא מדיניות הניסיון החוזר לחיוב מינוי.
אופציונלי: מפעילים נושא להודעות ללא מוצא כדי לקבל הודעות שלא ניתן למסור.
מסמנים את תיבת הסימון Dead lettering (הודעות שלא ניתן למסור).
ברשימה Dead letter topic, בוחרים את נושא ה-dead-letter או יוצרים אותו.
בשדה Maximum delivery attempts, מזינים את המספר המקסימלי של ניסיונות השליחה.
אופציונלי: בקטע Delivery properties, מפעילים או משביתים את אפשרויות המסירה הבאות:
אופציונלי: בקטע Acknowledgement deadline, מגדירים את המועד האחרון שבו המנוי צריך לעבד את ההודעות ולאשר את קבלתן. מידע נוסף זמין במאמר בנושא הארכת זמן האישור באמצעות ניהול חכירה.
אופציונלי: בקטע אפשרויות לגבי משך החיים, מגדירים כמה זמן המינוי ישמור את ההודעות.
בקטע Message retention duration, מציינים את משך הזמן לשמירת הודעות שלא אושרו.
כדי לשמור הודעות שאושרה קבלתן וגם הודעות שלא אושרה קבלתן, מסמנים את התיבה שמירת הודעות שאושרה קבלתן.
מידע נוסף מופיע במאמר בנושא הגדרת שמירת הודעות במינוי.
אופציונלי: בשדה תקופת התפוגה, בוחרים אפשרות:
כדי להגדיר את תפוגת המינוי, מסמנים את התיבה תפוגה אחרי מספר הימים הבא של חוסר פעילות. מזינים את מספר הימים שבהם המינוי יכול להישאר לא פעיל לפני ש-Pub/Sub ימחק אותו.
כדי להשבית את תפוגת המינוי, מסמנים את התיבה Never expire.
מידע נוסף זמין במאמר בנושא תפוגת מינוי.
לוחצים על יצירה.
אפשר גם ליצור מינוי מהקטע נושאים. מקש הקיצור הזה שימושי לקישור נושאים למינויים.
נכנסים לדף Topics במסוף Google Cloud .
לוחצים על more_vert לצד הנושא שרוצים ליצור לו מינוי.
בתפריט ההקשר, לוחצים על יצירת מינוי.
בדף Add subscription to topic (הוספת מינוי לנושא), מבצעים את השלבים שמתוארים בהליך הקודם. מזהה הנושא מתמלא באופן אוטומטי.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
-
כדי ליצור מינוי דחיפה, מריצים את הפקודה
gcloud pubsub subscriptions create.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
מחליפים את מה שכתוב בשדות הבאים:
-
SUBSCRIPTION_ID: השם או המזהה של מינוי הפוש החדש. -
TOPIC_ID: השם או המזהה של הנושא. - PUSH_ENDPOINT: כתובת ה-URL שמשמשת כנקודת הקצה של המינוי הזה.
לדוגמה,
https://myproject.appspot.com/myhandler.
-
REST
כדי ליצור מינוי דחיפה, משתמשים ב-method projects.subscriptions.create:
בקשה:
הבקשה צריכה להיות מאומתת באמצעות אסימון גישה בכותרת Authorization. כדי לקבל אסימון גישה ל-Application Default Credentials הנוכחיים: gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
גוף הבקשה:
{
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
// Only needed if you are using push delivery
"pushConfig": {
"pushEndpoint": "PUSH_ENDPOINT"
}
}כאשר:
https://myproject.appspot.com/myhandler.תשובה:
{
"name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID",
"topic": "projects/PROJECT_ID/topics/TOPIC_ID",
"pushConfig": {
"pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler",
"attributes": {
"x-goog-version": "v1"
}
},
"ackDeadlineSeconds": 10,
"messageRetentionDuration": "604800s",
"expirationPolicy": {
"ttl": "2678400s"
}
}C++
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C++ במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה של Pub/Sub C++ API.
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C# במאמר התחלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub C# API.
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח של Pub/Sub ב-Go (גרסה 2). אם אתם עדיין משתמשים בספרייה v1, כדאי לעיין במדריך להעברת נתונים ל-v2. כדי לראות רשימה של דוגמאות קוד מגרסה 1, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במסמכי העזר של ה-API של Pub/Sub Go.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר התחלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Java API.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Node.ts
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של PHP במאמר התחלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub PHP API.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של ה-API בשפת Python של Pub/Sub.
Ruby
בדוגמה הבאה נעשה שימוש בגרסה 3 של ספריית הלקוח של Pub/Sub ב-Ruby. אם אתם עדיין משתמשים בספרייה v2, כדאי לעיין במדריך להעברה ל-v3. כדי לראות רשימה של דוגמאות קוד ב-Ruby v2, עיינו ב דוגמאות הקוד שהוצאו משימוש.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של Ruby במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.
מעקב אחרי מינויים לקבלת עדכונים
ב-Cloud Monitoring יש מספר מדדים למעקב אחרי מינויים.
רשימה של כל המדדים שזמינים לגבי Pub/Sub והתיאורים שלהם מופיעה במסמכי התיעוד בנושא מעקב אחרי Pub/Sub.
אפשר גם לעקוב אחרי מינויים ב-Pub/Sub.
המאמרים הבאים
- ליצור או לשנות מינוי באמצעות פקודות של
gcloud. - ליצור או לשנות מינוי באמצעות ממשקי API ל-REST.