ייצוא וייבוא של נתונים
אתם יכולים להשתמש בשירות הייצוא והייבוא המנוהל של Firestore כדי לשחזר נתונים שנמחקו בטעות, ולייצא נתונים לעיבוד אופליין. אפשר לייצא את כל המסמכים או רק קבוצות ספציפיות של אוספים. באופן דומה, אפשר לייבא את כל הנתונים מייצוא או רק קבוצות ספציפיות של אוספים. אפשר לייבא נתונים שיוצאו ממסד נתונים אחד של Firestore למסד נתונים אחר של Firestore. אפשר גם לטעון את נתוני הייצוא של Firestore ל-BigQuery.
בדף הזה מוסבר איך לייצא ולייבא מסמכי Firestore באמצעות שירות הייצוא והייבוא המנוהל ו-Cloud Storage. שירות הייצוא והייבוא המנוהל של Firestore זמין דרך כלי שורת הפקודה gcloud ודרך Firestore API (REST, RPC).
לפני שמתחילים
כדי להשתמש בשירות המנוהל לייצוא ולייבוא, צריך לבצע את המשימות הבאות:
- מפעילים את החיוב בפרויקט ב- Google Cloud . רק בפרויקטים ב- Google Cloudשמופעל בהם חיוב אפשר להשתמש בפונקציונליות של ייצוא וייבוא.
- יוצרים קטגוריה של Cloud Storage לפרויקט במיקום שקרוב למיקום של מסד הנתונים ב-Firestore. אי אפשר להשתמש בקטגוריה שבה מופעלת התכונה "מגיש הבקשה משלם" או בקטגוריית Rapid לפעולות ייצוא וייבוא.
-
מוודאים שבחשבון יש את ההרשאות הנדרשות ל-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 באמצעות Cloud Shell.מוודאים ש-
gcloudמוגדר לפרויקט הנכון:gcloud config set project [PROJECT_ID]
ייצוא נתונים
פעולת ייצוא מעתיקה מסמכים ממסד הנתונים לקבוצת קבצים בקטגוריה של Cloud Storage. חשוב לדעת שהייצוא הוא לא תמונת מצב מדויקת של מסד הנתונים שנוצרה בשעת התחלת הייצוא. הייצוא עשוי לכלול שינויים שבוצעו בזמן שהפעולה רצה.
ייצוא כל המסמכים
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
לוחצים על ייצוא.
לוחצים על האפשרות ייצוא של כל מסד הנתונים.
בקטע Choose Destination, מזינים את השם של קטגוריה של Cloud Storage או לוחצים על הכפתור Browse כדי לבחור קטגוריה.
לוחצים על ייצוא.
המסוף חוזר לדף Import/Export. אם הפעולה מתחילה, הדף מוסיף רשומה לדף הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
gcloud
משתמשים בפקודה firestore export כדי לייצא את כל המסמכים במסד הנתונים, ומחליפים את [BUCKET_NAME] בשם של הקטגוריה של Cloud Storage. מוסיפים את הדגל --async כדי למנוע מהכלי gcloud להמתין עד שהפעולה תסתיים.
gcloud firestore export gs://[BUCKET_NAME] \ --database=[DATABASE]
מחליפים את מה שכתוב בשדות הבאים:
BUCKET_NAME: ארגון הייצוא על ידי הוספת קידומת לקובץ אחרי שם הקטגוריה, לדוגמהBUCKET_NAME/my-exports-folder/export-name. אם לא תציינו קידומת לקובץ, שירות הייצוא המנוהל ייצור קידומת על סמך חותמת הזמן הנוכחית.
DATABASE: שם מסד הנתונים שממנו רוצים לייצא את המסמכים. למסד הנתונים שמוגדר כברירת מחדל, משתמשים ב---database='(default)'.
אחרי שמתחילים פעולת ייצוא, סגירת הטרמינל לא מבטלת את הפעולה. אפשר לקרוא מידע נוסף במאמר ביטול פעולה.
ייצוא קבוצות ספציפיות של אוספים
Google Cloud Console
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
לוחצים על ייצוא.
לוחצים על האפשרות ייצוא של קבוצת אוספים אחת או יותר. בתפריט, בוחרים קבוצה אחת או יותר של אוספים.
בקטע Choose Destination, מזינים את השם של קטגוריה של Cloud Storage או לוחצים על הכפתור Browse כדי לבחור קטגוריה.
לוחצים על ייצוא.
המסוף חוזר לדף Import/Export. אם הפעולה מתחילה, הדף מוסיף רשומה לדף הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
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 שבהם חותמת הזמן היא חותמת זמן של דקה שלמה בשבעת הימים האחרונים, אבל לא לפני earliestVersionTime. אם הנתונים כבר לא קיימים בחותמת הזמן שצוינה, פעולת הייצוא נכשלת.
פעולת הייצוא של PITR תומכת בכל המסננים, כולל ייצוא של כל המסמכים וייצוא של קבוצות ספציפיות של אוספים.
לפני שמייצאים נתוני PITR, חשוב לשים לב לנקודות הבאות:
- מפעילים את PITR במסד הנתונים. אם התכונה PITR מושבתת, הייצוא בחותמת זמן של תמונת מצב נכשל, גם בחותמות זמן בשעה האחרונה אחרי
earliestVersionTime. פעולת הייצוא מחזירה את השגיאהPoint-in-Time Recovery must be enabled in order to execute exports at a snapshot timestamp. - ציינו את חותמת הזמן בפורמט 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.
צריך לבחור את השעה של תמונת המצב שרוצים לייצא
- בקטע Destination, מזינים את השם של קטגוריית Cloud Storage או משתמשים בכפתור Browse כדי לבחור קטגוריה.
-
לוחצים על ייצוא.
המסוף חוזר לדף 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. מאזינים של תמונת מצב מקבלים עדכונים שקשורים לפעולות ייבוא.
לפני הייבוא, אל תוסיפו מסמכי Firestore חדשים שלא היו בקובצי הפלט המקוריים של הייצוא, ואל תסירו מסמכים קיימים מקובצי GCS. אם תעשו את זה, הייבוא ייכשל.
שם הקובץ
.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.
בשדה Filename, מזינים את שם הקובץ של קובץ
.overall_export_metadataמפעולת ייצוא שהושלמה. אפשר להשתמש בלחצן עיון כדי לבחור את הקובץ.לוחצים על Import.
המסוף חוזר לדף Import/Export. אם הפעולה מתחילה, הדף מוסיף רשומה לדף הייבוא והייצוא האחרונים. אם הפעולה נכשלת, מוצגת בדף הודעת שגיאה.
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
אפשר לראות רשימה של פעולות הייצוא והייבוא האחרונות בדף Import/Export במסוף 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 .
בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על ייבוא/ייצוא. בטבלה ייבוא וייצוא מהזמן האחרון, פעולות שפועלות כרגע כוללות את הלחצן ביטול בעמודה הושלם. לוחצים על הלחצן Cancel כדי להפסיק את הפעולה. הכיתוב בלחצן משתנה ל-Cancelling, ואז ל-Cancelled כשהפעולה נעצרת לגמרי.

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.
-
לכל קטגוריה ברשימה שתשמש לפעולות ייבוא או ייצוא בעתיד, מבצעים את השלבים הבאים:
-
בשורה של הקטגוריה הזו בטבלה, לוחצים על תיקון. דף ההרשאות של הקטגוריה ייפתח בכרטיסייה חדשה.
- לוחצים על הוספה.
- בשדה New principals, מזינים את השם של סוכן השירות של Firestore.
- בשדה Select a role, בוחרים באפשרות Service Agents > Firestore Service Agent.
- לוחצים על Save.
- חוזרים לכרטיסייה עם הדף Firestore Import/Export.
- חוזרים על השלבים האלה בשביל קטגוריות אחרות ברשימה. חשוב לעיין בכל הדפים ברשימה.
-
-
לוחצים על Migrate to Firestore Service Agent. אם עדיין יש קטגוריות עם בדיקות הרשאה שנכשלו, צריך לאשר את ההעברה בלחיצה על Migrate.
תקבלו התראה כשההעברה תסתיים. אי אפשר לבטל את ההעברה.
לראות את סטטוס ההעברה
כדי לבדוק את סטטוס ההעברה של הפרויקט:
-
נכנסים לדף Databases במסוף Google Cloud .
- בוחרים את מסד הנתונים הרצוי מרשימת מסדי הנתונים.
-
בתפריט הניווט, לוחצים על ייבוא/ייצוא.
-
מחפשים את חשבון המשתמש לצד התווית Import/Export jobs run as.
אם חשבון המשתמש הוא
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, הפרויקט כבר הועבר לסוכן השירות של Firestore. אי אפשר לבטל את ההעברה.אם הפרויקט לא הועבר, בחלק העליון של הדף מופיע באנר עם הלחצן Check Bucket Status. כדי להשלים את ההעברה, קראו את המאמר מעבר לסוכן השירות של Firestore.
הוספת אילוץ מדיניות ברמת הארגון
-
מגדירים את האילוץ הבא במדיניות של הארגון:
דרישה לסוכן שירות של Firestore לייבוא או לייצוא (
firestore.requireP4SAforImportExport).האילוץ הזה מחייב שפעולות הייבוא והייצוא ישתמשו בסוכן השירות של Firestore כדי לאשר בקשות. כדי להגדיר את האילוץ הזה, קראו את המאמר יצירה וניהול של מדיניות הארגון.
החלת האילוץ הזה של מדיניות הארגון לא מעניקה באופן אוטומטי את ההרשאות המתאימות לקטגוריה של Cloud Storage לסוכן השירות של Firestore.
אם האילוץ יוצר שגיאות הרשאה בתהליכי עבודה של ייבוא או ייצוא, אתם יכולים להשבית אותו כדי לחזור להשתמש בחשבון השירות שמוגדר כברירת מחדל. אחרי שבודקים ומעדכנים את ההרשאות לקטגוריות של Cloud Storage, אפשר להפעיל שוב את האילוץ.