העברות מבוססות-אירועים
העברות מבוססות-אירועים בשירות העברת הנתונים ל-BigQuery מאפשרות לטעון נתונים באופן אוטומטי ל-BigQuery בתגובה להתראות לגבי אירועים. אתם יכולים להשתמש בגישה הזו להטמעה מצטברת של אצווה חסכונית, אם עומס העבודה שלכם יכול לסבול עיכוב של כמה דקות בין הרצות ההעברה. אם אתם צריכים שהנתונים יהיו זמינים בזמן אמת עם זמן אחזור קצר יותר, השתמשו ב-Storage Write API כדי להעביר נתונים ישירות ל-BigQuery.
מקורות נתונים עם תמיכה בהעברות מבוססות-אירועים
אפשר להשתמש בהעברות מבוססות-אירועים בשירות העברת הנתונים ל-BigQuery עם מקורות הנתונים הבאים:
מגבלות
העברות מבוססות-אירועים ל-BigQuery כפופות למגבלות הבאות:
- אחרי שמופעלת העברה מבוססת-אירועים, שירות העברת הנתונים ל-BigQuery ממתין עד 10 דקות לפני שהוא מפעיל את הרצת ההעברה הבאה, גם אם מגיע אירוע במהלך הזמן הזה.
- העברות מבוססות-אירועים לא תומכות בפרמטרים של זמן ריצה ל-URI של המקור או לנתיב הנתונים.
- אי אפשר להשתמש באותו מינוי ל-Pub/Sub בכמה הגדרות העברה מבוססות-אירועים.
הגדרת העברה מבוססת-אירוע ב-Cloud Storage
העברות מבוססות-אירועים מ-Cloud Storage משתמשות בהתראות Pub/Sub כדי לדעת מתי אובייקטים בקטגוריית המקור השתנו או נוספו. כשמשתמשים במצב העברה מצטברת, מחיקת אובייקט בקטגוריית המקור לא מוחקת את הנתונים המשויכים בטבלה ב-BigQuery ביעד.
לפני שמתחילים
לפני שמגדירים העברה מונחית-אירועים ב-Cloud Storage, צריך לבצע את הפעולות הבאות:
להפעיל את ממשק ה-API של Pub/Sub בשביל הפרויקט שמקבל התראות.
אם אתם אדמינים ב-Cloud Storage (
roles/storage.admin) וב-Pub/Sub (roles/pubsub.admin), אתם יכולים להמשיך ליצירת הגדרת העברה מבוססת-אירועים.אם אתם לא אדמינים ב-Cloud Storage (
roles/storage.admin) וב-Pub/Sub (roles/pubsub.admin), בקשו מהאדמין להקצות לכם את התפקידיםroles/storage.adminו-roles/pubsub.admin, או בקשו מהאדמין להשלים את הגדרת Pub/Sub ואת הגדרת ההרשאות של סוכן השירות בקטעים הבאים, ולהשתמש במינוי ל-Pub/Sub שהוגדר מראש כדי ליצור הגדרת העברה מבוססת-אירועים.הרשאות מפורטות שנדרשות כדי להגדיר התראות על הגדרות העברה מבוססות-אירועים:
אם אתם מתכננים ליצור נושאים ומינויים לפרסום התראות, צריכות להיות לכם ההרשאות
pubsub.topics.createו-pubsub.subscriptions.create.בין שאתם מתכננים להשתמש בנושאים ובמינויים חדשים או קיימים, צריכות להיות לכם ההרשאות הבאות. אם כבר יצרתם נושאים ומינויים ב-Pub/Sub, סביר להניח שכבר יש לכם את ההרשאות האלה.
כדי להגדיר התראות Pub/Sub בקטגוריה של Cloud Storage, אתם צריכים את ההרשאות הבאות:
storage.buckets.getstorage.buckets.update
תפקיד ה-IAM המוגדר מראש
pubsub.adminו-storage.adminכולל את כל ההרשאות שנדרשות כדי להגדיר העברה מונחית-אירועים ב-Cloud Storage. מידע נוסף מופיע במאמר בקרת גישה ב-Pub/Sub.
הגדרת התראות Pub/Sub ב-Cloud Storage
מוודאים שעמדתם בדרישות המוקדמות לשימוש ב-Pub/Sub עם Cloud Storage.
מחילים הגדרה של התראה על הקטגוריה של Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE
מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage שרוצים להפעיל בה אירועי התראות על קבצים -
TOPIC_NAME: השם של נושא Pub/Sub שבו רוצים לקבל את אירועי ההתראות על קבצים
אפשר גם להוסיף הגדרת התראה בשיטות אחרות, ולא רק באמצעות ה-CLI של gcloud. מידע נוסף זמין במאמר החלת הגדרת התראות.
-
מוודאים שהתראת Pub/Sub מוגדרת בצורה נכונה ל-Cloud Storage. משתמשים בפקודה
gcloud storage buckets notifications list:gcloud storage buckets notifications list gs://BUCKET_NAME
אם הפעולה בוצעה ללא שגיאות, התגובה תיראה דומה לדוגמה הבאה:
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
יוצרים מינוי שליפה לנושא:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
מחליפים את
SUBSCRIPTION_IDבשם או במזהה של מינוי השליפה החדש ב-Pub/Sub.אפשר ליצור מינוי משיכה באמצעות שיטות אחרות.
הגדרת ההרשאות של סוכן השירות
מאתרים את השם של סוכן שירות העברת הנתונים ל-BigQuery בפרויקט:
נכנסים לדף IAM & Admin.
מסמנים את התיבה Include Google-provided role grants.
הסוכן של שירות העברת הנתונים ל-BigQuery מופיע עם השם
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com, ומוקצה לו התפקיד "סוכן של שירות העברת הנתונים ל-BigQuery" (roles/bigquerydatatransfer.serviceAgent).
מקצים את התפקיד Pub/Sub Subscriber (
pubsub.subscriber) לסוכן של שירות העברת הנתונים ל-BigQuery.מסוף Cloud
כדי להקצות את התפקיד
Pub/Sub Subscriberלסוכן של שירות העברת הנתונים ל-BigQuery, פועלים לפי ההוראות במאמר שליטה בגישה באמצעות מסוף Google Cloud . אפשר להקצות את התפקיד ברמת הנושא, המינוי או הפרויקט.gcloudCLIפועלים לפי ההוראות במאמר הגדרת מדיניות כדי להוסיף את הקישור הבא:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
מחליפים את
PROJECT_NUMBERבמזהה הפרויקט שבו נוצרים משאבי ההעברה ומחויבים.שיוך השימוש במכסות: כשסוכן שירות העברת הנתונים ל-BigQuery ניגש למינוי Pub/Sub, השימוש במכסות מחויב בפרויקט של המשתמש.
מוודאים שלסוכן של שירות העברת הנתונים ל-BigQuery הוקצה התפקיד Pub/Sub Subscriber (
pubsub.subscriber).נכנסים לדף Pub/Sub במסוף Google Cloud .
בוחרים את המינוי ל-Pub/Sub שבו השתמשתם בהעברה מבוססת-האירועים.
אם חלונית המידע מוסתרת, לוחצים על Show info panel בפינה הימנית העליונה.
בכרטיסייה Permissions, מוודאים שלסוכן השירות של שירות העברת הנתונים ל-BigQuery יש את התפקיד Pub/Sub Subscriber (
pubsub.subscriber).

סיכום הפקודות להגדרת התראות והרשאות
הפקודות הבאות של Google Cloud CLI כוללות את כל הפקודות שנדרשות כדי להגדיר התראות והרשאות, כמו שמתואר בקטעים הקודמים.
gcloud
PROJECT_ID=project_id CONFIG_NAME=config_name RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}" # Create a Pub/Sub topic. gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}" # Create a Pub/Sub subscription. gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" # Create a Pub/Sub notification. gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE # Grant roles/pubsub.subscriber permission to the DTS service agent. PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)') gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}" --project="${PROJECT_ID}" --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role=roles/pubsub.subscriber
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
CONFIG_NAME: שם לזיהוי הגדרת ההעברה הזו.
יצירת הגדרות העברה
כדי ליצור העברה מונחית-אירועים של Cloud Storage, יוצרים העברה של Cloud Storage ובוחרים באפשרות Event-driven בתור Schedule Type. כאדמינים של Cloud Storage (roles/storage.admin) ושל Pub/Sub (roles/pubsub.admin), יש לכם הרשאות מספיקות כדי ששירות העברת הנתונים ל-BigQuery יגדיר באופן אוטומטי את Cloud Storage לשליחת התראות.
אם אתם לא אדמינים ב-Cloud Storage (roles/storage.admin) וב-Pub/Sub (roles/pubsub.admin), אתם צריכים לבקש מהאדמין להקצות לכם את התפקידים האלה, או לבקש ממנו להשלים את הגדרות ההתראות של Pub/Sub ב-Cloud Storage ואת הגדרות ההרשאות של סוכן השירות לפני שתוכלו ליצור את ההעברה מונחית האירועים.