במאמר הזה מוסבר איך לעדכן Single Message Transform (SMT) בנושא Pub/Sub. השינויים ב-SMT נכנסים לתוקף תוך כמה דקות. במקרה של SMTs של נושאים, השינויים חלים על הודעות חדשות שפורסמו אחרי שה-SMT עודכן.
כדי לעדכן את ה-SMT של נושא, אפשר להשתמש במסוף, ב-Google Cloud CLI, בספריית הלקוח או ב-Pub/Sub API. Google Cloud
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאה שנדרשת לעדכון של SMT בנושא, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Pub/Sub Editor (roles/pubsub.editor) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה מכיל את ההרשאה pubsub.topics.update, שנדרשת כדי לעדכן את ה-SMT של נושא.
יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
אפשר להגדיר בקרת גישה ברמת הפרויקט וברמת המשאב הספציפי.
עדכון של SMT בנושא
כדי לעדכן את כללי ה-SMT של נושאים:
המסוף
נכנסים לדף Topics של Pub/Sub במסוף Google Cloud .
-
לוחצים על הנושא שרוצים לערוך את ה-SMT שלו.
בדף הפרטים של הנושא, לוחצים על עריכה.
בכרטיסייה Transforms (טרנספורמציות) מפורטים כל ה-SMT שמצורפים לנושא.
-
בדף 'עריכת נושא', אפשר לבצע את המשימות הבאות:
-
הוספת SMT חדש. לוחצים על הוספת טרנספורמציה.
-
עריכה של SMT קיים מרחיבים את ה-SMT כדי לערוך אותו.
-
מסדרים מחדש את ה-SMT. משתמשים בחיצים למעלה ולמטה.
-
מחיקת SMT. לוחצים על לחצן המחיקה.
-
-
לוחצים על עדכון.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
-
מריצים את הפקודה
gcloud pubsub topics update:gcloud pubsub topics update TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILE
מחליפים את מה שכתוב בשדות הבאים:
-
TOPIC_ID: המזהה או השם של הנושא שרוצים לעדכן.
-
TRANSFORMS_FILE: הנתיב לקובץ ה-YAML או ה-JSON שמכיל את כללי התנועה המעודכנים.
דוגמה לקובץ המרות YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN - javascriptUdf: code: > function filterHighAmount(message, metadata) { const data = JSON.parse(message.data); if (data['amount'] > 100 ) { return null; } return message; } functionName: filterHighAmount
כדי לנקות את כל ה-SMT מהנושא, משתמשים בפקודה הבאה:
gcloud pubsub topics update TOPIC_ID --clear-message-transforms
מחליפים את TOPIC_ID במזהה או בשם של הנושא שרוצים לעדכן.
-