בדף הזה מוסבר איך להשתמש בתכונות המנוהלות של ייבוא וייצוא כדי להעביר נתוני Cloud Firestore מפרויקט אחד לפרויקט אחר. האפשרות הזו יכולה להיות שימושית להגדרת סביבת פיתוח או כחלק מהעברה קבועה של אפליקציה לפרויקט אחר. בדוגמה שבדף הזה מוסבר איך לייצא נתונים מפרויקט מקור ואז לייבא את הנתונים האלה לפרויקט יעד. העברת נתונים בין פרויקטים כוללת את השלבים הבאים:
- יוצרים קטגוריית Cloud Storage לאחסון הנתונים מפרויקט המקור.
- מייצאים את הנתונים מפרויקט המקור אל הדלי.
- נותנים לפרויקט היעד הרשאה לקרוא מהמאגר.
- מייבאים את הנתונים מהמאגר לפרויקט היעד.
לפני שמתחילים
כדי להשתמש בשירות המנוהל לייצוא ולייבוא, צריך לבצע את המשימות הבאות:
- מפעילים את החיוב בפרויקט המקור ובפרויקט היעד. Google Cloud אפשר להשתמש בפונקציונליות של ייצוא וייבוא רק בפרויקטים שמופעל בהם חיוב.
-
מוודאים שיש לחשבון שלכם את ההרשאות הנדרשות ב-Cloud IAM בפרויקט המקור ובפרויקט היעד. אם אתם הבעלים של שני הפרויקטים, יש לחשבון שלכם את ההרשאות הנדרשות. אחרת, תפקידי Cloud IAM הבאים מעניקים את ההרשאות הנדרשות לפעולות ייצוא וייבוא של Cloud Firestore:
Owner,Cloud Datastore OwnerאוCloud Datastore Import Export Adminבעלי הפרויקט יכולים להקצות אחד מהתפקידים האלה לפי השלבים שמפורטים במאמר הענקת גישה.
-
מגדירים את כלי שורת הפקודה
gcloudומתחברים לפרויקט באחת מהדרכים הבאות:-
גישה אל
gcloudממסוף Google Cloud באמצעות Cloud Shell.מוודאים שהמכשיר
gcloudמוגדר לפרויקט הנכון:gcloud config set project [SOURCE_PROJECT_ID]
-
-
מגדירים אינדקסים בפרויקט החדש. האינדקסים המורכבים צריכים להיות זהים בפרויקטים של המקור והיעד. כדי להימנע מעיבוד של כל מסמך כמה פעמים, צריך להגדיר את האינדקסים קודם.
ייצוא נתונים מפרויקט המקור
כדי לייצא את הנתונים, צריך ליצור קטגוריה של Cloud Storage עבור קובצי הייצוא של Cloud Firestore ולהתחיל פעולת ייצוא.
יצירת קטגוריה Cloud Storage
יוצרים קטגוריית Cloud Storage באותו מיקום שבו נמצא מסד הנתונים Cloud Firestore. כדי לראות את המיקום של מסד הנתונים, אפשר לעיין בהגדרת המיקום של הפרויקט. אי אפשר להשתמש בקטגוריה שבה מופעלת התכונה 'מגיש הבקשה משלם' לצורך פעולות ייצוא וייבוא.
אם מאגר Cloud Storage לא נמצא בפרויקט המקור, צריך לתת לחשבון השירות שמוגדר כברירת מחדל בפרויקט המקור גישה למאגר. לכל פרויקט Google Cloud יש חשבון שירות שמוגדר כברירת מחדל שנוצר באופן אוטומטי עם השם PROJECT_ID@appspot.gserviceaccount.com. Cloud Firestore
פעולות ייצוא משתמשות בחשבון השירות שמוגדר כברירת מחדל כדי לאשר פעולות ב-Cloud Storagebucket. כדי לתת לחשבון השירות שמוגדר כברירת מחדל גישה לקטגוריית המקור, מקצים לו את התפקיד Storage Admin.
אפשר להקצות את התפקיד הזה באמצעות הכלי gsutil שזמין ב-Cloud Shell:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
אפשר גם להקצות את התפקיד הזה במסוף Google Cloud.
השבתת פעולות כתיבה (אופציונלי)
אם האפליקציה ממשיכה לכתוב למסד הנתונים בזמן שאתם מבצעים פעולת ייצוא, יכול להיות שלא תתעדו את כל הכתיבות האלה בקובצי הייצוא. כדי לייצא נתונים ממצב עקבי, צריך להשבית את פעולות הכתיבה למסד הנתונים על ידי עדכון כללי האבטחה והפסקת כל הפעולות של Admin SDK.
עדכון כללי האבטחה
בכרטיסייה Cloud Firestore Rules במסוף, מעדכנים את כללי האבטחה של פרויקט המקור כדי לדחות את כל פעולות הכתיבה. לדוגמה:
// Deny write access to all users under any conditions service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow write: if false; } // Reads do not affect export operations // Add your read rules here } }הפסקת פעולות כתיבה מ-Admin SDK
כללי האבטחה לא מונעים פעולות כתיבה שמגיעות מסביבות שרת עם הרשאות שנוצרו באמצעות Firebase Admin SDK או ספריית לקוח של שרת Google Cloud. כדי להפסיק את פעולות הכתיבה משרתי האדמין, צריך להשבית או לעדכן את השרתים.
התחלת פעולת ייצוא
משתמשים בפקודה gcloud firestore export כדי לייצא נתונים מפרויקט המקור. אתם יכולים לייצא את כל הנתונים או רק קבוצות מסוימות של נתונים. מחליפים את [SOURCE_BUCKET] בשם הקטגוריה של Cloud Storage:
- ייצוא כל הנתונים
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- ייצוא של קבוצות אוספים ספציפיות
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] --async
חשוב לשים לב ל-outputURIPrefix של פעולת הייצוא, כי תצטרכו להשתמש בו בהמשך. כברירת מחדל, Cloud Firestore מוסיף קידומת לקובצי הייצוא על סמך חותמת זמן:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
במהלך פעולת הייצוא, אפשר להשתמש בפקודה firestore operations list כדי לראות את התקדמות הפעולה:
gcloud firestore operations list
ייבוא נתונים לפרויקט היעד
לאחר מכן, נותנים לפרויקט היעד גישה לקובצי הנתונים שלכם Cloud Firestore ומתחילים פעולת ייבוא.
נותנים לפרויקט היעד גישה לקובצי הנתונים
לפני שמתחילים פעולת ייבוא, צריך לוודא שלפרויקט היעד יש גישה לקובצי הנתונים Cloud Firestore.
העברת קובצי נתונים לקטגוריה מקומית
אם המיקום של קטגוריית המקור שונה מהמיקום של פרויקט היעד Cloud Firestore, צריך להעביר את קובצי הנתונים לקטגוריית Cloud Storage באותו מיקום של פרויקט היעד.
כדי להעביר את קובצי הנתונים לקטגוריה אחרת של Cloud Storage, פועלים לפי השלבים במאמר העברה ושינוי שם של קטגוריות.
בכל השלבים הבאים, משתמשים בקטגוריה החדשה הזו כ[SOURCE_BUCKET].
מעניקים לחשבון השירות של הפרויקט גישה לקטגוריית המקור
אם מאגר המקור לא נמצא בפרויקט היעד, צריך לתת לחשבון השירות שמוגדר כברירת מחדל בפרויקט היעד גישה למאגר המקור. שם חשבון השירות שמוגדר כברירת מחדל הוא [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com. כדי לתת לחשבון השירות שמוגדר כברירת מחדל גישה לקטגוריית המקור, צריך להעניק לו את ההרשאות המתאימות לגישה לקטגוריה.
אפשר להקצות את התפקידים הנדרשים באמצעות הכלי gsutil שזמין ב-Cloud Shell:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
אפשר גם להקצות את התפקיד הזה במסוף Google Cloud.
התחלת פעולת ייבוא
לפני שמתחילים בפעולת הייבוא, מוודאים ש-gcloud מוגדר לפרויקט הנכון:
gcloud config set project [DESTINATION_PROJECT_ID]
כדי לייבא את הנתונים מקטגוריית המקור לפרויקט היעד, משתמשים בפקודה gcloud firestore import:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
כאשר [EXPORT_PREFIX] תואם לקידומת ב-outputUriPrefix של פעולת הייצוא. לדוגמה:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
במהלך פעולת הייצוא, אפשר להשתמש בפקודה firestore operations list כדי לראות את התקדמות הפעולה:
gcloud firestore operations list