במאמר הזה מוסבר איך ליצור סכימות לנושאים ב-Pub/Sub.
לפני שמתחילים
לפני שיוצרים סכימה, צריך לבצע את הפעולות הבאות:
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות ליצירה ולניהול של סכימות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עריכה ב-Pub/Sub (roles/pubsub.editor) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירה ולניהול של סכימות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור סכימות ולנהל אותן, צריך את ההרשאות הבאות:
-
יצירת סכימה:
pubsub.schemas.create -
צירוף סכימה לנושא:
pubsub.schemas.attach -
ביצוע Commit של גרסת סכימה:
pubsub.schemas.commit -
מחיקת סכימה או עדכון של סכימה:
pubsub.schemas.delete -
קבלת סכימה או עדכונים לסכימה:
pubsub.schemas.get -
רשימת סכימות:
pubsub.schemas.list -
רשימת שינויים בסכימה:
pubsub.schemas.listRevisions -
החזרה של סכימה למצב קודם:
pubsub.schemas.rollback -
כדי לאמת הודעה:
pubsub.schemas.validate -
קבלת מדיניות IAM עבור סכימה:
pubsub.schemas.getIamPolicy -
מגדירים את מדיניות IAM לסכימה:
pubsub.schemas.setIamPolicy
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
אתם יכולים להעניק תפקידים והרשאות לחשבונות ראשיים כמו משתמשים, קבוצות, דומיינים או חשבונות שירות. אפשר ליצור סכימה בפרויקט אחד ולצרף אותה לנושא שנמצא בפרויקט אחר. מוודאים שיש לכם את ההרשאות הנדרשות לכל פרויקט.
יצירת סכימה
אפשר ליצור סכימה באמצעות מסוף Google Cloud , ה-CLI של gcloud, Pub/Sub API או ספריות הלקוח ב-Cloud.
לפני שיוצרים סכימה, כדאי לעיין במידע החשוב הזה על סכימות.
המסוף
כדי ליצור סכימה, פועלים לפי השלבים הבאים:
נכנסים לדף Pub/Sub schemas במסוף Google Cloud .
לוחצים על יצירת סכימה.
בשדה מזהה הסכימה, מזינים מזהה לסכימה.
הנחיות למתן שם לסכימה מפורטות במאמר הנחיות למתן שם לנושא, למינוי או לתמונת מצב.
בשדה סוג הסכימה, בוחרים באפשרות Avro או Protocol Buffer.
בשדה הגדרת סכימה, מזינים את ההגדרה של Avro או של Protocol Buffer לסכימה.
לדוגמה, הנה סכימה לדוגמה ב-Avro.
{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false } ] }אופציונלי: לוחצים על Validate definition (אימות ההגדרה) כדי לבדוק אם הגדרת הסכימה נכונה.
בדיקת האימות לא בודקת את התאימות של הסכימה להודעות שיפורסמו. בשלב הבא צריך לבדוק את ההודעות.
אופציונלי: אפשר לבדוק אם ההודעות עם הסכימה הנכונה מתפרסמות.
לוחצים על הודעת בדיקה.
בחלון Test message (הודעת בדיקה), בוחרים סוג של Message encoding (קידוד הודעה).
כותבים הודעת בדיקה בתיבת הטקסט גוף ההודעה.
לוחצים על בדיקה.
לדוגמה, הנה הודעה לדוגמה לסכימת הבדיקה. בדוגמה הזו, בוחרים באפשרות קידוד ההודעה בתור
JSON.{"ProductName":"GreenOnions", "SKU":34543, "InStock":true}יוצאים מדף הודעת הבדיקה.
לוחצים על יצירה כדי לשמור את הסכימה.
gcloud
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
כאשר:
- SCHEMA_TYPE הוא
avroאוprotocol-buffer. - SCHEMA_DEFINITION הוא
stringשמכיל את הגדרת הסכימה, בפורמט שמותאם לסוג הסכימה שנבחר.
אפשר גם לציין את הגדרת הסכימה בקובץ:
gcloud pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
כאשר:
- SCHEMA_TYPE הוא
avroאוprotocol-buffer. - SCHEMA_DEFINITION_FILE הוא
stringשמכיל את הנתיב לקובץ עם הגדרת הסכימה, בפורמט שמתאים לסוג הסכימה שנבחר.
REST
כדי ליצור סכימה, שולחים בקשת POST כמו הבאה:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas?schemaId=SCHEMA_ID Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
מציינים את השדות הבאים בגוף הבקשה:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE }
כאשר:
- SCHEMA_TYPE הוא
avroאוprotocol-buffer. - SCHEMA_DEFINITION היא מחרוזת שמכילה את ההגדרה של הסכימה, בפורמט שמתאים לסוג הסכימה שנבחר.
גוף התגובה צריך להכיל ייצוג JSON של משאב סכימה. לדוגמה:
{
"name": SCHEMA_NAME,
"type": SCHEMA_TYPE,
"definition": SCHEMA_DEFINITION
"revisionId": REVISION_ID
"revisionCreateTime": REVISION_CREATE_TIME
}
כאשר:
- REVISION_ID הוא המזהה של הגרסה שנוצר בשרת.
- REVISION_CREATE_TIME היא חותמת הזמן בפורמט ISO 8601 שבה נוצרה הגרסה.
C++
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C++ במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה בנושא Pub/Sub C++ API.
Avro
Proto
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של C# במאמר הפעלה מהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub C# API.
Avro
Proto
המשך
בדוגמה הבאה נעשה שימוש בגרסה הראשית של ספריית הלקוח Go Pub/Sub (v2). אם אתם עדיין משתמשים בספרייה v1, כדאי לעיין במדריך להעברה לגרסה v2. כדי לראות רשימה של דוגמאות קוד מגרסה 1, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Go API.
Avro
Proto
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Java API.
Avro
Proto
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמר Pub/Sub Node.js API reference documentation.
Avro
Proto
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Avro
Proto
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של PHP במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף זמין במאמר מאמרי העזרה של ה-API של Pub/Sub PHP.
Avro
Proto
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף זמין במאמרי העזרה של Pub/Sub Python API.
Avro
Proto
Ruby
בדוגמה הבאה נעשה שימוש בספריית הלקוח של Ruby Pub/Sub בגרסה 3. אם אתם עדיין משתמשים בספרייה v2, כדאי לעיין במדריך להעברה לגרסה v3. כדי לראות רשימה של דוגמאות קוד של Ruby v2, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Ruby במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.
Avro
Proto
אחרי שיוצרים סכימה, אפשר לראות את הפרטים שלה בדף סכימות.
אפשר לשייך את הסכימה לנושא.