העבר נתונים בין פרויקטים

דף זה מתאר כיצד להשתמש בתכונות הייבוא ​​והייצוא המנוהלות כדי להעביר נתונים של Cloud Firestore מפרויקט אחד למשנהו. זה יכול להיות שימושי להגדרת סביבת פיתוח או כחלק מהעברה קבועה של אפליקציה לפרויקט אחר. הדוגמה בדף זה מדגימה כיצד לייצא נתונים מפרויקט מקור ולאחר מכן לייבא את הנתונים הללו לפרויקט יעד. העברת נתונים בין פרויקטים כוללת את השלבים הבאים:

  1. צור דלי של Cloud Storage כדי להחזיק את הנתונים מפרויקט המקור שלך.
  2. ייצא את הנתונים מפרויקט המקור שלך לדלי.
  3. תן לפרויקט היעד שלך הרשאה לקרוא מהדלי.
  4. ייבא את הנתונים מהדלי לפרויקט היעד שלך.

לפני שאתה מתחיל

לפני שתוכל להשתמש בשירות הייצוא והיבוא המנוהל, עליך לבצע את המשימות הבאות:

  1. אפשר חיוב הן עבור פרויקט המקור והן עבור פרויקט היעד. רק פרויקטים של Google Cloud עם חיוב מופעל יכולים להשתמש בפונקציונליות הייצוא והייבוא.
  2. ודא שלחשבון שלך יש את ההרשאות הדרושות של Cloud IAM בפרויקט המקור ובפרויקט היעד שלך. אם אתה בעל פרויקט עבור שני הפרויקטים, לחשבון שלך יש את ההרשאות הנדרשות. אחרת, התפקידים הבאים של Cloud IAM מעניקים את ההרשאות הדרושות לפעולות ייצוא וייבוא ​​של Cloud Firestore:

    Owner , Cloud Datastore Owner או Cloud Datastore Import Export Admin

    בעל פרויקט יכול להעניק אחד מתפקידים אלה על ידי ביצוע השלבים ב'הענקת גישה' .

  3. הגדר את כלי שורת הפקודה gcloud והתחבר לפרויקט שלך באחת מהדרכים הבאות:

  4. הגדר אינדקסים בפרויקט החדש שלך. האינדקסים המרוכבים צריכים להתאים בין פרויקט המקור והיעד. יש להגדיר תחילה אינדקסים כדי למנוע צורך לעבד כל מסמך מספר פעמים.

ייצוא נתונים מפרויקט המקור

ייצא את הנתונים שלך על ידי יצירת דלי Cloud Storage עבור קובצי הייצוא שלך ב-Cloud Firestore והתחלת פעולת ייצוא.

צור דלי של Cloud Storage

צור דלי של Cloud Storage באותו מיקום כמו מסד הנתונים של Cloud Firestore שלך. כדי להציג את מיקום מסד הנתונים שלך, עיין בהגדרת מיקום הפרויקט שלך. אינך יכול להשתמש בדלי Requester Pays עבור פעולות ייצוא וייבוא.

אם דלי ה-Cloud Storage שלך ​​אינו בפרויקט המקור שלך , עליך לתת לחשבון שירות ברירת המחדל של פרויקט המקור גישה לדלי. לכל פרויקט של Google Cloud יש חשבון שירות ברירת מחדל שנוצר אוטומטית בשם PROJECT_ID @appspot.gserviceaccount.com . פעולות הייצוא של Cloud Firestore משתמשות בחשבון שירות ברירת המחדל הזה כדי לאשר פעולות דלי של Cloud Storage. כדי לתת לחשבון השירות המוגדר כברירת מחדל גישה לדלי המקור שלך, הענק לו את התפקיד Storage Admin .

אתה יכול להעניק תפקיד זה עם הכלי gsutil הזמין ב-Cloud Shell:

הפעל את 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.

  1. עדכון כללי אבטחה

    בלשונית 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
        }
      }
    
  2. Halt כותב מ-Admin SDK

    כללי אבטחה אינם מפסיקים כתיבה שמגיעה מסביבות שרת מורשות שנוצרו באמצעות Firebase Admin SDK או ספריית לקוח של Google Cloud Server . הקפד לעצור את פעולות הכתיבה משרתי הניהול שלך על ידי כיבוי או עדכון השרתים שלך.

התחל בפעולת ייצוא

השתמש בפקודת gcloud firestore export כדי לייצא נתונים מפרויקט המקור שלך. אתה יכול לייצא את כל הנתונים שלך או רק אוספים ספציפיים. החלף את [SOURCE_BUCKET] בשם של דלי ה-Cloud Storage שלך:

ייצא את כל הנתונים
gcloud firestore export gs://[SOURCE_BUCKET] --async
ייצא אוספים ספציפיים
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_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:

הפעל את 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