ייצוא וייבוא של נתונים
אתם יכולים להשתמש בשירות המנוהל לייצוא ולייבוא של Firestore כדי לשחזר נתונים שנמחקו בטעות ולייצא נתונים לעיבוד אופליין. אתם יכולים לייצא את כל המסמכים או רק קבוצות אוספים ספציפיות. באופן דומה, אתם יכולים לייבא את כל הנתונים מייצוא או רק קבוצות אוספים ספציפיות. אפשר לייבא נתונים ממסד נתונים אחד של Firestore למסד נתונים אחר של Firestore. אפשר גם לטעון ייצואים של Firestore ל-BigQuery.
בדף הזה מוסבר איך לייצא ולייבא מסמכי Firestore באמצעות שירות הייצוא והייבוא המנוהל ו-Cloud Storage. שירות הייצוא והייבוא המנוהל של Firestore זמין באמצעות כלי שורת הפקודה gcloud וממשק ה-API של Firestore (REST, RPC).
לפני שמתחילים
כדי להשתמש בשירות המנוהל לייצוא ולייבוא, צריך לבצע את המשימות הבאות:
- מפעילים את החיוב בפרויקט Google Cloud . אפשר להשתמש בפונקציות הייצוא והייבוא רק בפרויקטים שמופעל בהם חיוב. Google Cloud
- יוצרים קטגוריה של Cloud Storage לפרויקט במיקום שקרוב למיקום של מסד הנתונים של Firestore. אי אפשר להשתמש בקטגוריה שבה מופעלת התכונה 'מגיש הבקשה משלם' או בקטגוריה מהירה לצורך פעולות ייצוא וייבוא.
-
חשוב לוודא שיש לחשבון שלכם את ההרשאות הנדרשות ל-Firestore ול-Cloud Storage. אם אתם בעלי הפרויקט, יש לחשבון שלכם את ההרשאות הנדרשות. אחרת, התפקידים הבאים מעניקים את ההרשאות הנדרשות לפעולות ייצוא וייבוא ולגישה ל-Cloud Storage:
- תפקידים ב-Firestore:
Owner,Cloud Datastore OwnerאוCloud Datastore Import Export Admin תפקידים ב-Cloud Storage:
OwnerאוStorage Admin
- תפקידים ב-Firestore:
הרשאות של סוכן שירות
פעולות ייצוא וייבוא משתמשות בסוכן שירות של Firestore כדי לאשר פעולות של Cloud Storage. סוכן השירות של Firestore משתמש במוסכמת השמות הבאה:
- סוכן שירות של Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
מידע נוסף על סוכני שירות זמין במאמר סוכני שירות.
לסוכן השירות של Firestore צריכה להיות גישה לקטגוריה של Cloud Storage שבה נעשה שימוש בפעולת ייצוא או ייבוא. אם הקטגוריה של Cloud Storage נמצאת באותו פרויקט כמו מסד הנתונים של Firestore, לסוכן השירות של Firestore יש גישה לקטגוריה כברירת מחדל.
אם הקטגוריה של Cloud Storage נמצאת בפרויקט אחר, צריך לתת לסוכן השירות של Firestore גישה לקטגוריה של Cloud Storage.
הקצאת תפקידים לסוכן השירות
אפשר להשתמש בכלי gsutil משורת הפקודה כדי להקצות אחד מהתפקידים שבהמשך. לדוגמה, כדי להקצות את התפקיד 'אדמין של Storage' לסוכן השירות של Firestore, מריצים את הפקודה הבאה:
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \ gs://[BUCKET_NAME]
מחליפים את PROJECT_NUMBER במספר הפרויקט, שמשמש לקביעת השם של סוכן השירות של Firestore. כדי לראות את שם סוכן השירות, אפשר לעיין במאמר בנושא הצגת שם סוכן השירות.
אפשר גם להקצות את התפקיד הזה באמצעות מסוף Google Cloud .
הצגת השם של סוכן השירות
בדף Import/Export במסוף Google Cloud אפשר לראות באיזה חשבון משתמשים פעולות הייבוא והייצוא כדי לאשר בקשות. אפשר גם לראות אם מסד הנתונים משתמש בסוכן השירות של Firestore או בחשבון השירות מדור קודם של App Engine.
-
נכנסים לדף Databases במסוף Google Cloud .
-
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
-
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
- החשבון המורשה מוצג ליד התווית Import/Export jobs run as.
לסוכן השירות צריכה להיות הרשאה Storage Admin בקטגוריה של Cloud Storage שבה רוצים להשתמש לייצוא או לייבוא.
הגדרה של gcloud לפרויקט
אפשר להתחיל פעולות ייבוא וייצוא דרך Google Cloud המסוף או gcloudכלי שורת הפקודה. כדי להשתמש ב-gcloud, צריך להגדיר את כלי שורת הפקודה ולהתחבר לפרויקט באחת מהדרכים הבאות:
ניגשים אל
gcloudממסוף Google Cloud Platform באמצעות Cloud Shell.מוודאים שהמכשיר
gcloudמוגדר לפרויקט הנכון:gcloud config set project [PROJECT_ID]
ייצוא נתונים
פעולת ייצוא מעתיקה מסמכים במסד הנתונים שלכם לקבוצת קבצים בקטגוריה של Cloud Storage. חשוב לדעת שהייצוא הוא לא תמונת מצב מדויקת של מסד הנתונים שצולמה בזמן תחילת הייצוא. יכול להיות שייצוא יכלול שינויים שבוצעו בזמן שהפעולה הייתה פעילה.
ייצוא כל המסמכים
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
לוחצים על ייצוא.
לוחצים על האפשרות ייצוא של כל מסד הנתונים.
בקטע Choose Destination (בחירת יעד), מזינים את השם של קטגוריה של Cloud Storage או לוחצים על הלחצן Browse (עיון) כדי לבחור קטגוריה.
לוחצים על ייצוא.
המסוף חוזר לדף ייבוא/ייצוא. אם הפעולה מתחילה בהצלחה, נוסף לדף רשומה של הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
gcloud
משתמשים בפקודה firestore export כדי לייצא את כל המסמכים במסד הנתונים, ומחליפים את [BUCKET_NAME] בשם של קטגוריה של Cloud Storage. מוסיפים את הדגל --async כדי למנוע מהכלי gcloud להמתין לסיום הפעולה.
gcloud firestore export gs://[BUCKET_NAME] \ --database=[DATABASE]
מחליפים את מה שכתוב בשדות הבאים:
BUCKET_NAME: כדי לארגן את הייצוא, מוסיפים קידומת לקובץ אחרי שם ה-bucket, לדוגמה,BUCKET_NAME/my-exports-folder/export-name. אם לא מציינים קידומת לקובץ, שירות הייצוא המנוהל יוצר קידומת על סמך חותמת הזמן הנוכחית.
DATABASE: שם מסד הנתונים שממנו רוצים לייצא את המסמכים. למסד הנתונים שמוגדר כברירת מחדל, משתמשים ב---database='(default)'.
אחרי שמתחילים פעולת ייצוא, סגירת הטרמינל לא מבטלת את הפעולה. אפשר לעיין במאמר בנושא ביטול פעולה.
ייצוא של קבוצות אוספים ספציפיות
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
לוחצים על ייצוא.
לוחצים על האפשרות ייצוא של קבוצת אוספים אחת או יותר. בוחרים קבוצה אחת או יותר של אוספים מהתפריט הנפתח.
בקטע Choose Destination (בחירת יעד), מזינים את השם של קטגוריה של Cloud Storage או לוחצים על הלחצן Browse (עיון) כדי לבחור קטגוריה.
לוחצים על ייצוא.
המסוף חוזר לדף ייבוא/ייצוא. אם הפעולה מתחילה בהצלחה, נוסף לדף רשומה של הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
gcloud
כדי לייצא קבוצות ספציפיות של אוספים, משתמשים בדגל --collection-ids. הפעולה מייצאת רק את קבוצות האוספים עם המזהים שצוינו. קבוצת אוספים כוללת את כל האוספים והאוספים המשניים שהמזהה הסופי שלהם הוא המזהה של קבוצת האוספים.
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \ --database=[DATABASE]
לדוגמה, אפשר לעצב אוסף restaurants במסד הנתונים foo כך שיכלול כמה אוספי משנה, כמו ratings, reviews או outlets. כדי לייצא את קבוצת האוספים reviews, צריך לציין אותה במפורש:
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=reviews \ --database='cymbal'
אם מציינים במקום זאת את restaurants, המסמכים באוסף המשנה reviews לא ייוצאו.
ייצוא מחותמת זמן של PITR
אפשר לייצא את מסד הנתונים ל-Cloud Storage מנתוני PITR.
אפשר לייצא נתונים של PITR עם חותמת זמן של דקה שלמה ב-7 הימים האחרונים, אבל לא לפני earliestVersionTime. אם הנתונים כבר לא קיימים בחותמת הזמן שצוינה, פעולת הייצוא תיכשל.
פעולת הייצוא PITR תומכת בכל המסננים, כולל ייצוא של כל המסמכים וייצוא של קבוצות אוספים ספציפיות.
לפני שמייצאים נתונים של PITR, חשוב לשים לב לנקודות הבאות:
- מציינים את חותמת הזמן בפורמט RFC 3339. לדוגמה,
2023-05-26T10:20:00.00Z. - חשוב לוודא שחותמת הזמן שציינתם היא חותמת זמן של דקה שלמה, שחלה במהלך שבעת הימים האחרונים, אבל לא לפני
earliestVersionTime. אם הנתונים כבר לא קיימים בחותמת הזמן שצוינה, תיווצר שגיאה. - לא נחייב אתכם על ייצוא PITR שנכשל.
המסוף
-
נכנסים לדף Databases במסוף Google Cloud .
מעבר אל Databases - בוחרים מסד נתונים מתוך רשימת מסדי הנתונים.
- בתפריט הניווט, לוחצים על ייבוא/ייצוא.
- לוחצים על ייצוא.
- מגדירים את מקור הייצוא כך שייצא את כל מסד הנתונים או רק קבוצות אוספים ספציפיות.
בקטע Choose the state of your database to export (בחירת מצב מסד הנתונים לייצוא), בוחרים באפשרות Export from an earlier point in time (ייצוא מנקודת זמן מוקדמת יותר).
בחירת זמן הצילום של התמונה לשימוש בייצוא
- בקטע יעד, מזינים את השם של קטגוריית Cloud Storage או לוחצים על הלחצן עיון כדי לבחור קטגוריה.
-
לוחצים על ייצוא.
המסוף חוזר לדף Import/Export. אם הפעולה מתחילה בהצלחה, נוספת רשומה לדף של הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת הודעת שגיאה בדף.
gcloud
אפשר לייצא את מסד הנתונים אל Cloud Storage מנתוני PITR באמצעות הפקודה gcloud firestore export.
מייצאים את מסד הנתונים ומציינים את הפרמטר snapshot-time עם חותמת זמן של שחזור. מריצים את הפקודה הבאה כדי לייצא את מסד הנתונים לקטגוריה.
gcloud firestore export gs://[BUCKET_NAME_PATH] \ --snapshot-time=[PITR_TIMESTAMP]
PITR_TIMESTAMP היא חותמת זמן של PITR ברמת פירוט של דקה, לדוגמה, 2023-05-26T10:20:00.00Z.
כדי לייצא קבוצות אוספים ספציפיות, מוסיפים את הדגל --collection-ids.
ייבוא נתונים
אחרי שקובצי הייצוא נמצאים ב-Cloud Storage, אפשר לייבא מסמכים מהקבצים האלה בחזרה לפרויקט או לפרויקט אחר. חשוב לשים לב לנקודות הבאות לגבי פעולות ייבוא:
כשמייבאים נתונים, המערכת מעדכנת את האינדקסים הנדרשים באמצעות הגדרות האינדקס הנוכחיות של מסד הנתונים. ייצוא לא מכיל הגדרות אינדקס.
בייבוא לא מוקצים מזהים חדשים למסמכים. הייבוא מתבצע באמצעות המזהים שנשמרו בזמן הייצוא. בזמן הייבוא של מסמך, המזהה שלו שמור כדי למנוע התנגשויות בין מזהים. אם כבר קיים מסמך עם אותו מזהה, הייבוא מחליף את המסמך הקיים.
אם מסמך במסד הנתונים שלכם לא מושפע מייבוא, הוא יישאר במסד הנתונים אחרי הייבוא.
פעולות ייבוא לא מפעילות את Cloud Functions. מאזינים ל-Snapshot מקבלים עדכונים שקשורים לפעולות ייבוא.
שם הקובץ
.overall_export_metadataצריך להיות זהה לשם תיקיית האב שלו:gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadataאם מעבירים או מעתיקים את קובצי הפלט של ייצוא, צריך לוודא ששם הקובץ PARENT_FOLDER_NAME ושם הקובץ
.overall_export_metadataזהים.
ייבוא של כל המסמכים מייצוא
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
לוחצים על Import.
בשדה שם הקובץ, מזינים את שם הקובץ של קובץ
.overall_export_metadataמפעולת ייצוא שהושלמה. אפשר להשתמש בלחצן עיון כדי לבחור את הקובץ.לוחצים על Import.
המסוף חוזר לדף ייבוא/ייצוא. אם הפעולה מתחילה בהצלחה, נוסף לדף רשומה של הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
gcloud
כדי לייבא מסמכים מפעולת ייצוא קודמת, משתמשים בפקודה firestore import.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]
מחליפים את מה שכתוב בשדות הבאים:
BUCKET_NAME/EXPORT_PREFIX: המיקום של קובצי הייצוא.
DATABASE: שם מסד הנתונים. למסד הנתונים שמוגדר כברירת מחדל, משתמשים ב---database='(default)'.
לדוגמה:
gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'
אפשר לוודא את המיקום של קובצי הייצוא בדפדפן Cloud Storage במסוף Google Cloud :
אחרי שמתחילים פעולת ייבוא, סגירת הטרמינל לא מבטלת את הפעולה. אפשר לעיין במאמר בנושא ביטול פעולה.
ייבוא של קבוצות אוספים ספציפיות
Google Cloud Console
אי אפשר לבחור קבוצות אוספים ספציפיות במסוף. במקום זאת, אתם צריכים להשתמש ב-gcloud.
gcloud
כדי לייבא קבוצות ספציפיות של אוספים מתוך קבוצה של קבצים שיוצאו, משתמשים בדגל --collection-ids. הפעולה מייבאת רק את קבוצות האוספים עם המזהים שצוינו. קבוצת אוספים כוללת את כל האוספים והאוספים המשניים שהמזהה הסופי שלהם הוא המזהה של קבוצת האוספים. מציינים את שם מסד הנתונים באמצעות הדגל --database. למסד הנתונים שמוגדר כברירת מחדל, משתמשים ב---database='(default)'.
אפשר לייבא קבוצות אוספים ספציפיות רק מייצוא של קבוצות אוספים ספציפיות. אי אפשר לייבא קבוצות אוספים ספציפיות מייצוא של כל המסמכים.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \ --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \ --database=[DATABASE]
ייבוא של ייצוא PITR
כדי לייבא את מסד הנתונים שייצאתם, פועלים לפי השלבים במאמר בנושא ייבוא כל המסמכים. אם מסמך כלשהו כבר קיים במסד הנתונים, הוא יוחלף.
ניהול פעולות ייצוא וייבוא
אחרי שמתחילים פעולת ייצוא או ייבוא, Firestore מקצה לפעולה שם ייחודי. אפשר להשתמש בשם הפעולה כדי למחוק, לבטל או לבדוק את הסטטוס של הפעולה.
שמות הפעולות מתחילים בקידומת projects/[PROJECT_ID]/databases/(default)/operations/, לדוגמה:
projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
עם זאת, אפשר להשמיט את הקידומת כשמציינים שם פעולה עבור הפקודות describe, cancel ו-delete.
הצגת רשימה של כל פעולות הייצוא והייבוא
Google Cloud Console
בדף ייבוא/ייצוא במסוף Google Cloud אפשר לראות רשימה של פעולות ייצוא וייבוא מהזמן האחרון.
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
gcloud
משתמשים בפקודה operations list כדי לראות את כל פעולות הייצוא והייבוא שפועלות או שהושלמו לאחרונה:
gcloud firestore operations list
בדיקת סטטוס הפעולה
Google Cloud Console
בדף Import/Export במסוף Google Cloud אפשר לראות את הסטטוס של פעולת ייבוא או ייצוא מהזמן האחרון.
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
gcloud
משתמשים בפקודה operations describe כדי להציג את הסטטוס של פעולת ייצוא או ייבוא.
gcloud firestore operations describe [OPERATION_NAME]
הערכת משך הזמן עד לסיום
בקשה לקבלת הסטטוס של פעולה ממושכת מחזירה את המדדים workEstimated ו-workCompleted. כל אחד מהמדדים האלה מוחזר גם במספר הבייטים וגם במספר הישויות:
workEstimatedמציג את המספר הכולל המשוער של בייטים ומסמכים שפעולה תעבד. יכול להיות ש-Firestore ישמיט את המדד הזה אם הוא לא יכול לבצע הערכה.workCompletedמציג את מספר הבייטים והמסמכים שעברו עיבוד עד עכשיו. אחרי שהפעולה מסתיימת, הערך מציג את המספר הכולל של הבייטים והמסמכים שעברו עיבוד בפועל, שיכול להיות גדול מהערך שלworkEstimated.
כדי לקבל הערכה גסה של ההתקדמות, מחלקים את workCompleted ב-workEstimated. יכול להיות שההערכה הזו לא מדויקת, כי היא מבוססת על נתונים שנאספו באיחור.
ביטול פעולה
Google Cloud Console
אפשר לבטל פעולת ייצוא או ייבוא שפועלת בדף Import/Export במסוף Google Cloud .
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
בטבלה ייבוא וייצוא מהזמן האחרון, פעולות שפועלות כרגע כוללות לחצן ביטול בעמודה הושלם. כדי לעצור את הפעולה, לוחצים על הלחצן ביטול. הלחצן משתנה להודעה מתבצע ביטול ואז לבוטל כשהפעולה מפסיקה לחלוטין.

gcloud
משתמשים בפקודה operations cancel כדי לעצור פעולה בתהליך:
gcloud firestore operations cancel [OPERATION_NAME]
ביטול של פעולה שמתבצעת לא מבטל את הפעולה. אם מבטלים פעולת ייצוא, המסמכים שכבר יוצאו יישארו ב-Cloud Storage. אם מבטלים פעולת ייבוא, העדכונים שכבר בוצעו במסד הנתונים יישארו במקומם. אי אפשר לייבא ייצוא שהושלם באופן חלקי.
מחיקת פעולה
כדי להסיר פעולה מרשימת הפעולות האחרונות, משתמשים בפקודה gcloud firestore operations delete. הפקודה הזו לא תמחק קובצי ייצוא מ-Cloud Storage.
gcloud firestore operations delete [OPERATION_NAME]
חיוב ותמחור של פעולות ייצוא וייבוא
כדי להשתמש בשירות המנוהל לייצוא ולייבוא, צריך להפעיל את החיוב בפרויקט ב- Google Cloud .
פעולות ייצוא וייבוא כרוכות בחיוב על קריאה וכתיבה של מסמכים, לפי התעריפים שמפורטים בתמחור של Firestore. פעולות ייצוא כרוכות בפעולת קריאה אחת לכל מסמך שמיוצא. פעולות ייבוא כרוכות בפעולת כתיבה אחת לכל מסמך שמיוצא.
הקבצים שנוצרים מאוחסנים ב-Cloud Storage ונספרים במסגרת עלויות אחסון הנתונים ב-Cloud Storage.
פעולות ייצוא או ייבוא לא יפעילו התראות על Google Cloud תקציב עד שהן יושלמו. פעולות ייצוא וייבוא לא ישפיעו על השימוש שמוצג בקטע השימוש במסוף.
צפייה בעלויות הייצוא והייבוא
פעולות ייצוא וייבוא מקבלות את התווית goog-firestoremanaged:exportimport. בדף דוחות חיוב ב-Cloud, אפשר להשתמש בתווית הזו כדי לראות את העלויות שקשורות לפעולות ייבוא וייצוא:

ייצוא אל BigQuery
אפשר לטעון נתונים מייצוא של Firestore ל-BigQuery, אבל רק אם ציינתם מסנן collection-ids. מידע נוסף זמין במאמר טעינת נתונים מייצוא של Firestore.
מגבלת העמודות ב-BigQuery
ב-BigQuery יש מגבלה של 10,000 עמודות לכל טבלה. פעולות ייצוא של Firestore יוצרות סכימת טבלה ב-BigQuery לכל קבוצת אוספים. בסכימה הזו, כל שם שדה ייחודי בתוך קבוצת אוסף הופך לעמודה בסכימה.
אם סכמת BigQuery של קבוצת אוספים חורגת מ-10,000 עמודות, פעולת הייצוא של Firestore מנסה לא לחרוג ממגבלת העמודות על ידי התייחסות לשדות של מפות כבייטים. אם ההמרה הזו מביאה את מספר העמודות מתחת ל-10,000, אפשר לטעון את הנתונים ל-BigQuery, אבל אי אפשר לשלוח שאילתות על שדות המשנה בתוך שדות המפה. אם מספר העמודות עדיין גדול מ-10,000, פעולת הייצוא לא יוצרת סכימת BigQuery לקבוצת האוסף, ולא ניתן לטעון את הנתונים שלה ל-BigQuery.
ייצוא של קובצי פורמט ומטא-נתונים
הפלט של ייצוא מנוהל הוא בפורמט היומן של LevelDB.
קובצי מטא-נתונים
פעולת ייצוא יוצרת קובץ מטא-נתונים לכל קבוצת אוספים שאתם מציינים. בדרך כלל קובצי מטא-נתונים נקראים
ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata.
קבצי המטא-נתונים הם מאגרי פרוטוקולים, ואפשר לפענח אותם באמצעות קומפיילר הפרוטוקולים protoc. לדוגמה, אפשר לפענח קובץ מטא-נתונים כדי לזהות את קבוצות האוספים שקיימות בקובצי הייצוא:
protoc --decode_raw < export0.export_metadata
העברה של סוכן שירות
ב-Firestore נעשה שימוש בסוכן שירות של Firestore כדי לאשר פעולות ייבוא וייצוא, במקום להשתמש בחשבון השירות של App Engine. סוכן השירות וחשבון השירות משתמשים במוסכמות הבאות למתן שמות:
- סוכן שירות של Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
בעבר, Firestore השתמש בחשבון השירות שמוגדר כברירת מחדל של App Engine במקום בסוכן השירות של Firestore. אם מסד הנתונים שלכם עדיין משתמש בחשבון השירות של App Engine כדי לייבא או לייצא נתונים, מומלץ לפעול לפי ההוראות שבקטע הזה כדי לעבור לשימוש בסוכן השירות של Firestore.
- חשבון שירות של App Engine
PROJECT_ID@appspot.gserviceaccount.com
עדיף להשתמש בסוכן השירות של Firestore כי הוא ספציפי ל-Firestore. חשבון השירות של App Engine משותף ליותר משירות אחד.
הצגת חשבון ההרשאה
בדף Import/Export במסוף Google Cloud אפשר לראות באיזה חשבון נעשה שימוש בפעולות הייבוא והייצוא כדי לאשר בקשות. אפשר גם לראות אם מסד הנתונים כבר משתמש בסוכן השירות של Firestore.
-
נכנסים לדף Databases במסוף Google Cloud .
- בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
-
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
- החשבון המורשה מוצג ליד התווית Import/Export jobs run as.
אם הפרויקט שלכם לא משתמש בסוכן השירות של Firestore, אתם יכולים להעביר אותו לסוכן השירות של Firestore באחת מהדרכים הבאות:
- העברת פרויקט על ידי בדיקה ועדכון של ההרשאות של קטגוריות Cloud Storage (מומלץ).
- מוסיפים אילוץ מדיניות ברמת הארגון שמשפיע על כל הפרויקטים בארגון.
הטכניקה הראשונה עדיפה כי היא מצמצמת את היקף ההשפעה לפרויקט Firestore יחיד. השיטה השנייה פחות מומלצת כי היא לא מעבירה את ההרשאות הקיימות לקטגוריה של Cloud Storage. עם זאת, הוא מציע תאימות לאבטחה ברמת הארגון.
העברה על ידי בדיקה ועדכון של הרשאות לקטגוריות של Cloud Storage
תהליך ההעברה כולל שני שלבים:
- עדכון ההרשאות של קטגוריה של Cloud Storage. פרטים נוספים מופיעים בקטע הבא.
- מאשרים את ההעברה לסוכן השירות של Firestore.
הרשאות של סוכן שירות לקטגוריה
לכל פעולת ייצוא או ייבוא שמשתמשת בקטגוריה של Cloud Storage בפרויקט אחר, צריך לתת לסוכן השירות של Firestore הרשאות גישה לקטגוריה הזו. לדוגמה, פעולות שמעבירות נתונים לפרויקט אחר צריכות גישה לקטגוריה בפרויקט האחר הזה. אחרת, הפעולות האלה ייכשלו אחרי המעבר לסוכן השירות של Firestore.
אם תהליכי העבודה של הייבוא והייצוא מתבצעים באותו פרויקט, לא צריך לשנות את ההרשאות. לסוכן השירות של Firestore יש גישה לקטגוריות באותו פרויקט כברירת מחדל.
מעדכנים את ההרשאות של קטגוריות Cloud Storage מפרויקטים אחרים כדי לתת גישה לסוכן השירות service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com. נותנים לסוכן השירות את התפקיד Firestore Service Agent.
התפקיד Firestore Service Agent מעניק הרשאות קריאה וכתיבה לקטגוריית Cloud Storage. אם אתם צריכים להעניק רק הרשאות קריאה או רק הרשאות כתיבה, אתם יכולים להשתמש בתפקיד בהתאמה אישית.
תהליך ההעברה שמתואר בקטע הבא עוזר לכם לזהות קטגוריות של Cloud Storage שאולי צריך לעדכן בהן את ההרשאות.
העברת פרויקט לסוכן השירות של Firestore
כדי להעביר את חשבון השירות של App Engine לסוכן השירות של Firestore, צריך לבצע את השלבים הבאים. אחרי ההעברה, אי אפשר לבטל אותה.
-
נכנסים לדף Databases במסוף Google Cloud .
- בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
-
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
-
אם הפרויקט שלכם עדיין לא הועבר לסוכן של שירות Firestore, יוצג לכם באנר עם תיאור של ההעברה וכפתור Check Bucket Status (בדיקת סטטוס קטגוריית היעד). בשלב הבא נסביר איך לזהות ולתקן שגיאות אפשריות בהרשאות.
לוחצים על Check Bucket Status (בדיקת סטטוס מאגר).
יופיע תפריט עם האפשרות להשלים את ההעברה ורשימה של קטגוריות Cloud Storage. יכול להיות שיחלפו כמה דקות עד שהרשימה תיטען.
הרשימה הזו כוללת מאגרי מידע שהיו בשימוש לאחרונה בפעולות ייבוא וייצוא, אבל כרגע לא ניתנות הרשאות קריאה וכתיבה לסוכן השירות של Firestore.
- רושמים את שם חשבון המשתמש של סוכן השירות של Firestore בפרויקט. שם סוכן השירות מופיע מתחת לתווית Service agent to give access to.
-
לכל קטגוריה ברשימה שבה תשתמשו בעתיד לפעולות ייבוא או ייצוא, צריך לבצע את השלבים הבאים:
-
בשורה של הדלי בטבלה, לוחצים על Fix (תיקון). ייפתח דף ההרשאות של מאגר הנתונים בכרטיסייה חדשה.
- לוחצים על הוספה.
- בשדה New principals, מזינים את השם של סוכן השירות של Firestore.
- בשדה Select a role בוחרים באפשרות Service Agents > Firestore Service Agent.
- לוחצים על Save.
- חוזרים לכרטיסייה עם הדף Firestore Import/Export (ייבוא/ייצוא של Firestore).
- חוזרים על השלבים האלה לגבי דליים אחרים ברשימה. חשוב לעיין בכל הדפים של הרשימה.
-
-
לוחצים על Migrate to Firestore Service Agent (מעבר לסוכן שירות של Firestore). אם עדיין יש לכם מאגרי מידע שבהם בדיקות ההרשאות נכשלו, אתם צריכים לאשר את ההעברה על ידי לחיצה על העברה.
תקבלו התראה כשההעברה תסתיים. אי אפשר לבטל את ההעברה אחרי שהיא התחילה.
הצגת סטטוס ההעברה
כדי לאמת את סטטוס ההעברה של הפרויקט:
-
נכנסים לדף Databases במסוף Google Cloud .
- בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
-
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
-
מחפשים את העיקרון לצד התווית הפעלת משימות ייבוא/ייצוא.
אם העיקרון הוא
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, הפרויקט כבר הועבר לסוכן השירות של Firestore. אי אפשר לבטל את המיגרציה.אם הפרויקט לא הועבר, יופיע באנר בחלק העליון של הדף עם לחצן Check Bucket Status (בדיקת סטטוס המאגר). כדי להשלים את המיגרציה, אפשר לעיין במאמר בנושא מיגרציה לסוכן השירות של Firestore.
הוספת אילוץ מדיניות ברמת הארגון
-
צריך להגדיר את ההגבלה הבאה במדיניות של הארגון:
Require Firestore Service Agent for import/export (
firestore.requireP4SAforImportExport).בגלל המגבלה הזו, פעולות ייבוא וייצוא צריכות להשתמש בסוכן השירות של Firestore כדי לאשר בקשות. הוראות להגדרת האילוץ הזה מופיעות במאמר יצירה וניהול של מדיניות הארגון .
החלת האילוץ הזה של מדיניות הארגון לא מעניקה באופן אוטומטי את ההרשאות המתאימות לקטגוריית Cloud Storage לסוכן השירות של Firestore.
אם האילוץ יוצר שגיאות הרשאה בתהליכי עבודה של ייבוא או ייצוא, אפשר להשבית אותו כדי לחזור לשימוש בחשבון שירות שמוגדר כברירת מחדל. אחרי בדיקה ועדכון של ההרשאות של הקטגוריה ב-Cloud Storage, אפשר להפעיל שוב את האילוץ.