העברות מבוססות-אירועים
אתם יכולים להשתמש בשירות העברת הנתונים ל-BigQuery כדי ליצור העברות מבוססות-אירועים, שמטעינות נתונים באופן אוטומטי על סמך התראות על אירועים. מומלץ להשתמש בהעברות מבוססות-אירועים אם אתם צריכים להטמיע נתונים מצטברים שמבצעים אופטימיזציה של יעילות העלויות.
כשמגדירים העברות מבוססות-אירועים, יכול להיות עיכוב של כמה דקות בין כל העברת נתונים. אם אתם צריכים שהנתונים יהיו זמינים באופן מיידי, מומלץ להשתמש ב-Storage Write API שמעביר נתונים ישירות ל-BigQuery עם זמן האחזור הנמוך ביותר האפשרי. Storage Write API מספק עדכונים בזמן אמת לתרחישי השימוש התובעניים ביותר.
כשבוחרים בין שתי האפשרויות, כדאי לשקול אם צריך לתעדף העברה מצטברת של נתונים במנות שחוסכת בעלויות, עם העברות מבוססות-אירועים, או אם מעדיפים את הגמישות של Storage Write API.
מקורות נתונים עם תמיכה בהעברות מבוססות-אירועים
שירות העברת נתונים ל-BigQuery יכול להשתמש בהעברות מבוססות-אירועים עם מקורות הנתונים הבאים:
מגבלות
העברות מבוססות-אירועים ל-BigQuery כפופות למגבלות הבאות:
- אחרי שהעברה מבוססת-אירועים מופעלת, שירות העברת הנתונים ל-BigQuery ממתין עד 10 דקות לפני שהוא מפעיל את העברת הנתונים הבאה, גם אם אירוע מגיע במהלך הזמן הזה.
- העברות מבוססות-אירועים לא תומכות בפרמטרים של זמן ריצה עבור URI של מקור או נתיב נתונים.
- אי אפשר לעשות שימוש חוזר באותו מינוי ל-Pub/Sub בכמה הגדרות של העברה מבוססת-אירועים.
הגדרת העברה מבוססת-אירוע ב-Cloud Storage
העברות מבוססות-אירועים מ-Cloud Storage משתמשות בהתראות Pub/Sub כדי לדעת מתי אובייקטים בקטגוריית המקור שונו או נוספו. כשמשתמשים במצב העברה מצטברת, מחיקת אובייקט בדלי המקור לא מוחקת את הנתונים המשויכים בטבלה ב-BigQuery ביעד.
לפני שמתחילים
לפני שמגדירים העברה מבוססת-אירועים ב-Cloud Storage, צריך לבצע את השלבים הבאים:
להפעיל את Pub/Sub API בפרויקט שמקבל התראות.
אם יש לכם תפקיד אדמין ב-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, סביר להניח שכבר יש לכם את ההרשאות האלה.
צריכות להיות לכם ההרשאות הבאות בקטגוריית Cloud Storage שבה אתם רוצים להגדיר התראות Pub/Sub.
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.s3ns-system.iam.gserviceaccount.comומוענקת לו ההרשאה של סוכן שירות העברת נתונים ל-BigQuery (roles/bigquerydatatransfer.serviceAgent).
מידע נוסף על סוכני שירות זמין במאמר סוכני שירות.
נותנים לסוכן השירות של שירות העברת נתונים ל-BigQuery את התפקיד Pub/Sub Subscriber (
pubsub.subscriber).מסוף Cloud
פועלים לפי ההוראות במאמר בנושא שליטה בגישה דרך מסוף Cloud de Confiance כדי להעניק את התפקיד
Pub/Sub Subscriberלסוכן השירות של שירות העברת הנתונים ל-BigQuery. אפשר להעניק את התפקיד ברמת הנושא, המינוי או הפרויקט.gcloudCLIפועלים לפי ההוראות שבמאמר הגדרת מדיניות כדי להוסיף את הקישור הבא:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com" }
מחליפים את
PROJECT_NUMBERבמזהה הפרויקט שבו מתארחים משאבי ההעברה, ושבו נוצרים החיובים.שיוך של ניצול מכסה: כשסוכן שירות של שירות העברת נתונים ל-BigQuery ניגש למינוי Pub/Sub, ניצול המכסה מחויב בפרויקט של המשתמש.
מוודאים שסוכן שירות העברת הנתונים ל-BigQuery קיבל את התפקיד Pub/Sub Subscriber (
pubsub.subscriber).נכנסים לדף Pub/Sub במסוף Cloud de Confiance .
בוחרים את מינוי Pub/Sub שבו השתמשתם בהעברה מבוססת-אירועים.
אם חלונית המידע מוסתרת, לוחצים על Show info panel בפינה השמאלית העליונה.
בכרטיסייה הרשאות, מוודאים שלסוכן השירות של שירות העברת הנתונים ל-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.s3ns-system.iam.gserviceaccount.com --role=roles/pubsub.subscriber
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
CONFIG_NAME: שם לזיהוי הגדרת ההעברה הזו.
יצירת הגדרות העברה
כדי ליצור העברה מ-Cloud Storage שמבוססת על אירועים, יוצרים העברה מ-Cloud Storage ובוחרים באפשרות מבוססת על אירועים בתור סוג התזמון. בתור אדמין של 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 ושל הרשאות סוכן השירות לפני שתוכלו ליצור את ההעברה מבוססת-האירועים.