במאמר הזה מוסבר איך ליצור סכימות לנושאים ב-Pub/Sub.
לפני שמתחילים
לפני שיוצרים סכימה, צריך לבצע את הפעולות הבאות:
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות ליצירה ולניהול של סכימות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד עריכה ב-Pub/Sub (roles/pubsub.editor) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירה ולניהול של סכימות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור סכימות ולנהל אותן, צריך את ההרשאות הבאות:
-
יצירת סכימה:
pubsub.schemas.create -
צירוף סכימה לנושא:
pubsub.schemas.attach -
אישור שינוי בסכימה:
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 } ] }אופציונלי: לוחצים על אימות ההגדרה כדי לבדוק אם הגדרת הסכימה נכונה.
בבדיקת האימות לא נבדקת התאימות של הסכימה להודעות שיפורסמו. בשלב הבא, בודקים את ההודעות.
אופציונלי: אתם יכולים לבדוק אם הודעות עם סכימה נכונה מתפרסמות.
לוחצים על הודעת בדיקה.
בחלון 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.
Avro
Proto
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במאמר תחילת העבודה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Node.js API.
Avro
Proto
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של PHP במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub PHP API.
Avro
Proto
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במאמר מדריך למתחילים: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של ה-API בשפת Python של Pub/Sub.
Avro
Proto
Ruby
בדוגמה הבאה נעשה שימוש בספריית הלקוח של Ruby Pub/Sub בגרסה 3. אם אתם עדיין משתמשים בספרייה v2, כדאי לעיין במדריך להעברה ל-v3. כדי לראות רשימה של דוגמאות קוד של Ruby v2, אפשר לעיין ב דוגמאות הקוד שהוצאו משימוש.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Ruby במאמר תחילת העבודה המהירה: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Ruby API.
Avro
Proto
חלודה
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Rust במאמר מדריך מהיר: שימוש בספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Pub/Sub Rust API.
Avro
אחרי שיוצרים סכימה, אפשר לראות את הפרטים שלה בדף סכימות.
אפשר לשייך את הסכימה לנושא.