קבלת התראות עם פידים של שינויים במטא-נתונים

במאמר הזה מוסבר איך להגדיר פידים של שינויים במטא-נתונים ב-Dataplex Universal Catalog כדי לקבל התראות דרך Pub/Sub כשמטא-נתונים ב-Dataplex Universal Catalog נוצרים, מתעדכנים או נמחקים.

מידע נוסף על פידים של שינויים במטא-נתונים זמין במאמר סקירה כללית על פידים של שינויים במטא-נתונים.

לפני שמתחילים

חשוב להכיר את Pub/Sub ואת Dataplex Universal Catalog API.

  1. Enable the Dataplex Universal Catalog and Pub/Sub APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  2. יוצרים נושא Pub/Sub כדי לקבל התראות. מידע נוסף זמין במאמר יצירת נושא.

  3. התקנה gcloud. מוודאים שהכינוי הקצר של gcloud מוגדר.

  4. מגדירים כינוי של gcurl. הפעולה הזו יוצרת קיצור דרך שכולל את אסימון האימות ומגדיר את סוג התוכן JSON לבקשות API:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  5. מגדירים את המשתנה DATAPLEX_API:

    DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט שבו מופעל Dataplex API
    • LOCATION: המיקום שבו העבודה מופעלת – לדוגמה, us-central1,‏ europe-west3 או asia-south1

תפקידים והרשאות נדרשים

כדי להגדיר פידים של שינויים במטא-נתונים, צריך לוודא שלכם ולחשבון השירות של Dataplex Universal Catalog יש את ההרשאות והתפקידים הנדרשים ב-IAM.

תפקידים והרשאות של משתמשים

כדי לקבל את ההרשאות שדרושות לייצוא מטא-נתונים ולגישה להודעות של פידים לשינוי מטא-נתונים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט או בארגון:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לייצוא מטא-נתונים ולגישה להודעות של פידים לשינוי מטא-נתונים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי לייצא מטא-נתונים ולגשת להודעות בפידים של שינויים במטא-נתונים, צריך את ההרשאות הבאות:

  • ייצוא מטא-נתונים:
    • dataplex.metadataFeeds.create בפרויקט
    • dataplex.entryGroups.export במשאב שמגדיר את היקף הפיד (ארגון, פרויקט או קבוצת רשומות)
    • resourcemanager.projects.get בפרויקט
    • resourcemanager.projects.list בפרויקט
  • גישה להודעות של פידים לשינוי מטא-נתונים:
    • pubsub.subscriptions.consume במינוי
    • pubsub.topics.attachSubscription בנושא

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

תפקידים והרשאות של חשבון שירות ב-Dataplex Universal Catalog

כדי לוודא שלחשבון השירות של Dataplex Universal Catalog יש את ההרשאה הנדרשת לפרסום הודעות של פידים לשינויים במטא-נתונים, צריך לבקש מהאדמין להקצות לחשבון השירות של Dataplex Universal Catalog את תפקיד ה-IAM‏ פרסום הודעות ב-Pub/Sub (roles/pubsub.publisher) בנושא Pub/Sub.

מידע נוסף על הקצאת תפקידים מופיע במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים.

התפקיד שמוגדר מראש מכיל את ההרשאה pubsub.topics.publish, שנדרשת כדי לפרסם הודעות של פידים לשינוי מטא-נתונים.

יכול להיות שהאדמין יוכל גם להעניק לחשבון השירות של Dataplex Universal Catalog את ההרשאה הזו באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מתן הרשאות לחשבון השירות של Dataplex Universal Catalog

סוכן השירות של Dataplex Universal Catalog נוצר כשמפעילים את Dataplex API. אפשר לזהות את סוכן השירות לפי כתובת האימייל שלו:

service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com

כאן, PROJECT_NUMBER הוא מספר הפרויקט שבו הפעלתם את Dataplex API.

לחשבון השירות של Dataplex Universal Catalog צריכה להיות אפשרות לפרסם הודעות בנושא Pub/Sub. כדי להעניק את ההרשאה הזו, צריך להקצות לחשבון השירות את התפקיד 'פרסום הודעות ב-Pub/Sub' (roles/pubsub.publisher) בנושא ב-Pub/Sub:

gcloud

מריצים את הפקודה gcloud pubsub topics add-iam-policy-binding:

gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
    --role="roles/pubsub.publisher"

מחליפים את מה שכתוב בשדות הבאים:

  • TOPIC_ID: המזהה של נושא Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים.
  • PROJECT_NUMBER: מספר הפרויקט של פרויקט Dataplex Universal Catalog שבו נמצא חשבון השירות.

המסוף

  1. נכנסים לדף Topics של Pub/Sub במסוף Google Cloud .

    מעבר לנושאים

  2. בוחרים את הנושא שמשמש להתראות על פיד מטא נתונים, ואם צריך לוחצים על הצגת חלונית המידע.

  3. בכרטיסייה Permissions, לוחצים על Add principal.

  4. בשדה New principals, מזינים את חשבון השירות של Dataplex Universal Catalog: service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com.

  5. בשדה Assign roles (הקצאת תפקידים), בוחרים באפשרות Pub/Sub Publisher (מפרסם Pub/Sub).

  6. לוחצים על Save.

יצירת פיד לשינויים במטא נתונים

כדי לקבוע אילו שינויים ייצרו התראות, אפשר להגדיר פיד של שינויים במטא-נתונים כדי לעקוב אחרי משאבים ספציפיים. כדי לעשות זאת, צריך לציין היקף, כמו כל הארגון, פרויקטים ספציפיים או קבוצות ספציפיות של רשומות. היקף מאפשר לכם להגדיר אילו משאבים לעקוב אחריהם, אבל אתם יכולים להשתמש במסננים כדי לחדד עוד יותר את ההגדרה של מתי Dataplex Universal Catalog ישלח התראות.

מידע נוסף זמין במאמר פיד לשינויים במטא-נתונים.

REST

כדי ליצור פיד לשינויים במטא-נתונים, משתמשים בשיטה projects.locations.metadataFeeds.create.

היקף הארגון

כדי ליצור פיד של שינויים במטא-נתונים שעוקב אחרי כל הארגון, מריצים את הפקודה הבאה:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "organizationLevel": true
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID_PUBSUB: מזהה הפרויקט שבו נמצא נושא ה-Pub/Sub – לדוגמה, example-project
  • TOPIC_ID: מזהה נושא ה-Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים – לדוגמה, example-topic
  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים ליצור, לדוגמה example-feed

היקף הפרויקט

מריצים את הפקודה הבאה כדי ליצור פיד לשינויים במטא-נתונים שעוקב אחרי פרויקטים ספציפיים:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "projects": [
      "projects/PROJECT_ID_1",
      "projects/PROJECT_ID_2"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID_PUBSUB: מזהה הפרויקט שבו נמצא נושא ה-Pub/Sub – לדוגמה, example-project
  • TOPIC_ID: מזהה נושא ה-Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים – לדוגמה, example-topic
  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים ליצור, לדוגמה example-feed

היקף קבוצת הכניסה

מריצים את הפקודה הבאה כדי ליצור פיד לשינויים במטא-נתונים שעוקב אחרי קבוצות רשומות ספציפיות:

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "entryGroups": [
      "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_1",
      "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_2"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID_PUBSUB: מזהה הפרויקט שבו נמצא נושא ה-Pub/Sub – לדוגמה, example-project
  • LOCATION: המיקום שבו רוצים ליצור את הפיד, לדוגמה us-central1
  • ENTRY_GROUP_ID: מזהה קבוצת הרשומות למעקב, לדוגמה: example-entry-group
  • TOPIC_ID: מזהה נושא ה-Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים – לדוגמה, example-topic
  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים ליצור, לדוגמה example-feed

בעזרת מסננים

מריצים את הפקודה הבאה כדי ליצור פיד של שינויים במטא-נתונים עם מסננים (סינון לפי סוג הרשומה):

gcurl -X POST -d "$(cat <<EOF
{
  "scope": {
    "projects": [
      "projects/PROJECT_ID_1",
      "projects/PROJECT_ID_2"
    ]
  },
  "filter": {
    "entryTypes": [
      "projects/PROJECT_ID/locations/global/entryTypes/bigquery-table"
    ]
  },
  "pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID_PUBSUB: מזהה הפרויקט שבו נמצא נושא ה-Pub/Sub – לדוגמה, example-project
  • TOPIC_ID: מזהה נושא ה-Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים – לדוגמה, example-topic
  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים ליצור, לדוגמה example-feed

תשובה:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataplex.v1.OperationMetadata",
    "createTime": "2023-10-02T15:01:23Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID",
    "verb": "create",
    "apiVersion": "v1"
  },
  "done": false
}

צפייה בפידים של שינויים במטא-נתונים

אפשר לראות את הפרטים של פיד שינויים במטא-נתונים.

REST

כדי לראות פיד של שינויים במטא-נתונים, משתמשים בשיטה projects.locations.metadataFeeds.get.

מריצים את הפקודה הבאה:

gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים להציג. לדוגמה: example-feed

רשימה של פידים לשינוי מטא-נתונים

אפשר להציג רשימה של פידים של שינויים במטא-נתונים בפרויקט ובמיקום.

REST

כדי להציג רשימה של פידים של שינויים במטא-נתונים, משתמשים בשיטה projects.locations.metadataFeeds.list.

מריצים את הפקודה הבאה:

gcurl "https://${DATAPLEX_API}/metadataFeeds"

עדכון פיד לשינוי מטא-נתונים

אפשר לעדכן את ההיקף או את המסננים של פיד קיים של שינויים במטא-נתונים.

REST

כדי לעדכן פיד לשינויים במטא-נתונים, משתמשים בשיטה projects.locations.metadataFeeds.patch.

מריצים את הפקודה הבאה כדי לעדכן את פיד השינויים במטא-נתונים ולהסיר את המסננים של סוג הרשומה:

gcurl -X PATCH -d "$(cat <<EOF
{
  "filter": {
    "entryTypes": []
  }
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds/FEED_ID?updateMask=filter"

מחליפים את מה שכתוב בשדות הבאים:

  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים לעדכן. לדוגמה: example-feed

מחיקת פיד לשינויים במטא-נתונים

אפשר למחוק פיד של שינויים במטא-נתונים אם אתם כבר לא רוצים לקבל התראות.

מחיקה של פיד שינויים במטא-נתונים מפסיקה את הפרסום של שינויים חדשים במטא-נתונים בנושא Pub/Sub. עם זאת, הפעולה הזו לא מוחקת את הנושא או את המינוי שמשויך לפיד. אם אין יותר צורך בהם, צריך למחוק אותם ידנית.

לפני שמוחקים את הפיד או את המינוי, צריך לוודא שאפליקציות המנויים עיבדו את כל ההודעות שלא נשלחו במינוי Pub/Sub.

REST

כדי למחוק פיד של שינויים במטא-נתונים, משתמשים בשיטה projects.locations.metadataFeeds.delete.

מריצים את הפקודה הבאה:

gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • FEED_ID: המזהה של פיד השינויים במטא-נתונים שרוצים למחוק – לדוגמה, example-feed

צריכת הודעות התראה

אחרי שמגדירים פיד של שינויי מטא-נתונים, Dataplex Universal Catalog מפרסם הודעות בנושא Pub/Sub שצוין כשמתרחשים שינויים במטא-נתונים. כדי להשתמש בהודעות האלה, צריך ליצור מינוי Pub/Sub לנושא.

לדוגמה, אפשר ליצור מינוי שליפה ולהשתמש ב-Google Cloud CLI כדי להציג הודעות:

  1. יצירת מינוי:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SUBSCRIPTION_ID: מזהה המינוי שרוצים ליצור
    • TOPIC_ID: מזהה נושא Pub/Sub שאליו מתפרסמות ההודעות של פיד השינויים במטא-נתונים.
  2. שליפת הודעות מהמינוי:

    gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SUBSCRIPTION_ID: מזהה המינוי שממנו רוצים לשלוף הודעות

מידע נוסף על עיבוד הודעות Pub/Sub זמין במאמר בנושא קבלת הודעות ממינוי שליפה. מידע על פורמט ההודעה זמין במאמר Data payload.

המאמרים הבאים