ส่งออกและนำเข้าข้อมูล

คุณสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore เพื่อกู้คืนจากการลบข้อมูลโดยไม่ตั้งใจและเพื่อส่งออกข้อมูลสำหรับการประมวลผลแบบออฟไลน์ คุณสามารถส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเล็กชันเฉพาะ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเล็กชันเฉพาะ ข้อมูลที่ส่งออกจากฐานข้อมูล Cloud Firestore หนึ่งฐานข้อมูลนำเข้าไปยังฐานข้อมูล Cloud Firestore อื่นได้ คุณยัง โหลดการส่งออก Cloud Firestore ไปยัง BigQuery ได้อีกด้วย

หน้านี้อธิบายวิธีการส่งออกและนำเข้าเอกสาร Cloud Firestore โดยใช้บริการส่งออกและนำเข้าที่มีการจัดการและ Cloud Storage บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore มีให้ใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud และ Cloud Firestore API ( REST , RPC )

ก่อนจะเริ่ม

ก่อนที่คุณจะใช้บริการส่งออกและนำเข้าที่มีการจัดการ คุณต้องทำงานต่อไปนี้ให้เสร็จสิ้น:

  1. เปิดใช้งานการเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้งานการเรียกเก็บเงินเท่านั้นที่สามารถใช้ฟังก์ชันการส่งออกและนำเข้า
  2. สร้างที่เก็บข้อมูล Cloud Storage สำหรับโปรเจ็ กต์ของคุณในตำแหน่งใกล้กับ ตำแหน่งฐานข้อมูล Cloud Firestore คุณไม่สามารถใช้บัคเก็ตของผู้ขอจ่ายสำหรับการดำเนินการส่งออกและนำเข้า
  3. ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีสิทธิ์ที่จำเป็นสำหรับ Cloud Firestore และ Cloud Storage หากคุณเป็นเจ้าของโครงการ บัญชีของคุณมีสิทธิ์ที่จำเป็น มิฉะนั้น บทบาทต่อไปนี้จะให้สิทธิ์ที่จำเป็นสำหรับการดำเนินการส่งออกและนำเข้าและสำหรับการเข้าถึง Cloud Storage:

    • บทบาท Cloud Firestore: Owner , Cloud Datastore Owner หรือ Cloud Datastore Import Export Admin
    • บทบาท Cloud Storage: Owner หรือผู้ Storage Admin

สิทธิ์ของบัญชีบริการเริ่มต้น

โปรเจ็กต์ Google Cloud แต่ละโปรเจ็กต์จะสร้างบัญชีบริการเริ่มต้นชื่อ PROJECT_ID @appspot.gserviceaccount.com โดยอัตโนมัติ การดำเนินการส่งออกและนำเข้าใช้บัญชีบริการนี้เพื่อให้สิทธิ์การดำเนินการ Cloud Storage

บัญชีบริการเริ่มต้นของโปรเจ็กต์ต้องมีการเข้าถึงที่เก็บข้อมูล Cloud Storage ที่ใช้ในการดำเนินการส่งออกหรือนำเข้า หากที่เก็บข้อมูล Cloud Storage ของคุณอยู่ในโปรเจ็กต์เดียวกับฐานข้อมูล Cloud Firestore บัญชีบริการเริ่มต้นจะมีสิทธิ์เข้าถึงที่เก็บข้อมูลตามค่าเริ่มต้น

หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์อื่น คุณต้องให้สิทธิ์บัญชีบริการเริ่มต้นเข้าถึงที่เก็บข้อมูล Cloud Storage

บัญชีบริการต้องการบทบาทผู้ Storage Admin สำหรับที่เก็บข้อมูล Cloud Storage เพื่อใช้ในการดำเนินการส่งออกหรือนำเข้า

หากคุณปิดใช้งานหรือลบบัญชีบริการเริ่มต้นของ App Engine แอป App Engine ของคุณจะสูญเสียการเข้าถึงฐานข้อมูล Cloud Firestore ของคุณ หากคุณปิดใช้งานบัญชีบริการ App Engine คุณสามารถเปิดใช้งานใหม่ได้ โปรดดู ที่ การเปิดใช้งานบัญชีบริการ หากคุณลบบัญชีบริการ App Engine ของคุณภายใน 30 วันที่ผ่านมา คุณสามารถกู้คืนบัญชีบริการของคุณได้ โปรดดูที่ การลบ บัญชีบริการ

ตั้งค่า gcloud สำหรับโครงการของคุณ

คุณเริ่มต้นการดำเนินการนำเข้าและส่งออกได้ผ่านคอนโซล Google Cloud Platform หรือเครื่องมือบรรทัดคำสั่ง gcloud ในการใช้ gcloud ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโครงการของคุณด้วยวิธีใดวิธีหนึ่งต่อไปนี้:

ส่งออกข้อมูล

การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลของคุณไปยังชุดของไฟล์ในที่เก็บข้อมูล Cloud Storage โปรดทราบว่าการส่งออกไม่ใช่สแนปชอตฐานข้อมูลที่แน่นอนที่ถ่ายในเวลาเริ่มต้นการส่งออก การส่งออกอาจรวมถึงการเปลี่ยนแปลงที่ทำขึ้นในขณะที่กำลังดำเนินการอยู่

ส่งออกเอกสารทั้งหมด

Google Cloud Console

  1. ไปที่หน้า นำเข้า/ส่งออก Cloud Firestore ในคอนโซล Google Cloud Platform

    ไปที่หน้านำเข้า/ส่งออก

  2. คลิก ส่งออก

  3. คลิกตัวเลือก ส่งออกฐานข้อมูลทั้งหมด

  4. ด้านล่าง เลือกปลายทาง ให้ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล

  5. คลิก ส่งออก

คอนโซลกลับสู่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นสำเร็จ หน้าจะเพิ่มรายการในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

ใช้คำสั่งการ firestore export เพื่อส่งออกเอกสารทั้งหมดในฐานข้อมูลของคุณ โดยแทนที่ [BUCKET_NAME] ด้วยชื่อที่เก็บข้อมูล Cloud Storage ของคุณ เพิ่มแฟ --async เพื่อป้องกันไม่ให้เครื่องมือ gcloud รอให้การดำเนินการเสร็จสิ้น

gcloud firestore export gs://[BUCKET_NAME]

คุณสามารถจัดระเบียบการส่งออกโดยเพิ่มคำนำหน้าไฟล์หลังชื่อที่เก็บข้อมูล เช่น BUCKET_NAME/my-exports-folder/export-name ถ้าคุณไม่ระบุคำนำหน้าไฟล์ บริการส่งออกที่มีการจัดการจะสร้างไฟล์ตามการประทับเวลาปัจจุบัน

เมื่อคุณเริ่มการดำเนินการส่งออก การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ

ส่งออกคอลเลกชันเฉพาะ

Google Cloud Console

  1. ไปที่หน้า นำเข้า/ส่งออก Cloud Firestore ในคอนโซล Google Cloud Platform

    ไปที่หน้านำเข้า/ส่งออก

  2. คลิก ส่งออก

  3. คลิกตัวเลือก ส่งออกกลุ่มคอลเลกชันอย่างน้อยหนึ่งกลุ่ม ใช้เมนูแบบเลื่อนลงเพื่อเลือกกลุ่มคอลเลกชันอย่างน้อยหนึ่งกลุ่ม

  4. ด้านล่าง เลือกปลายทาง ให้ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล

  5. คลิก ส่งออก

คอนโซลกลับสู่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นสำเร็จ หน้าจะเพิ่มรายการในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

หากต้องการส่งออกกลุ่มคอลเล็กชันเฉพาะ ให้ใช้ --collection-ids การดำเนินการส่งออกเฉพาะกลุ่มคอลเลกชันที่มี ID คอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ที่เส้นทางใดก็ได้) ที่มี ID คอลเลกชันที่ระบุ

gcloud firestore export gs://[BUCKET_NAME] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1]

นำเข้าข้อมูล

เมื่อคุณส่งออกไฟล์ใน Cloud Storage แล้ว คุณจะนำเข้าเอกสารในไฟล์เหล่านั้นกลับเข้าไปในโปรเจ็กต์ของคุณหรือไปยังโปรเจ็กต์อื่นได้ สังเกตประเด็นต่อไปนี้เกี่ยวกับการดำเนินการนำเข้า:

  • เมื่อคุณนำเข้าข้อมูล ดัชนีที่จำเป็นจะได้รับการอัปเดตโดยใช้ข้อกำหนดดัชนีปัจจุบันของฐานข้อมูลของคุณ การส่งออกไม่มีคำจำกัดความของดัชนี

  • การนำเข้าไม่ได้กำหนดรหัสเอกสารใหม่ การนำเข้าจะใช้ ID ที่บันทึกไว้ในขณะที่ส่งออก เมื่อมีการนำเข้าเอกสาร ID ของเอกสารจะถูกสงวนไว้เพื่อป้องกันการชนกันของ ID หากมีเอกสารที่มี ID เดียวกันอยู่แล้ว การนำเข้าจะเขียนทับเอกสารที่มีอยู่

  • ถ้าเอกสารในฐานข้อมูลของคุณไม่ได้รับผลกระทบจากการนำเข้า เอกสารนั้นจะยังคงอยู่ในฐานข้อมูลของคุณหลังจากการนำเข้า

  • การดำเนินการนำเข้าไม่ทริกเกอร์ Cloud Functions ผู้ฟังสแนป ชอตจะได้รับการอัปเดตที่เกี่ยวข้องกับการดำเนินการนำเข้า

  • ชื่อไฟล์ .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

  1. ไปที่หน้า นำเข้า/ส่งออก Cloud Firestore ในคอนโซล Google Cloud Platform

    ไปที่หน้านำเข้า/ส่งออก

  2. คลิก นำเข้า

  3. ในฟิลด์ ชื่อไฟล์ ให้ป้อนชื่อไฟล์ของไฟล์ .overall_export_metadata จากการดำเนินการเอ็กซ์พอร์ตที่เสร็จสมบูรณ์ คุณสามารถใช้ปุ่ม เรียกดู เพื่อช่วยคุณเลือกไฟล์

  4. คลิก นำเข้า

คอนโซลกลับสู่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นสำเร็จ หน้าจะเพิ่มรายการในหน้าการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว หน้าจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

ใช้คำสั่ง firestore import เพื่อนำเข้าเอกสารจากการดำเนินการเอ็กซ์พอร์ตครั้งก่อน

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

โดยที่ [BUCKET_NAME] และ [EXPORT_PREFIX] ชี้ไปที่ตำแหน่งของไฟล์ส่งออกของคุณ ตัวอย่างเช่น:

gcloud firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

คุณยืนยันตำแหน่งของไฟล์ส่งออกได้ในเบราว์เซอร์ Cloud Storage ในคอนโซล Google Cloud Platform:

เปิดเบราว์เซอร์ Cloud Storage

เมื่อคุณเริ่มการดำเนินการนำเข้า การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ

นำเข้าคอลเลกชันเฉพาะ

Google Cloud Console

คุณไม่สามารถเลือกคอลเล็กชันเฉพาะในคอนโซลได้ ใช้ gcloud แทน

gcloud

ในการนำเข้ากลุ่มคอลเล็กชันเฉพาะจากชุดของไฟล์เอ็กซ์พอร์ต ให้ใช้ --collection-ids การดำเนินการนำเข้าเฉพาะกลุ่มคอลเลกชันที่มี ID คอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ที่เส้นทางใดก็ได้) ที่มี ID คอลเลกชันที่ระบุ

เฉพาะการส่งออกของกลุ่มคอลเลกชันเฉพาะเท่านั้นที่สนับสนุนการนำเข้ากลุ่มคอลเลกชันเฉพาะ คุณไม่สามารถนำเข้าคอลเลกชันเฉพาะจากการส่งออกเอกสารทั้งหมด

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1]

บริหารจัดการการส่งออกและนำเข้า

หลังจากที่คุณเริ่มการดำเนินการส่งออกหรือนำเข้า Cloud Firestore จะกำหนดชื่อที่ไม่ซ้ำให้กับการดำเนินการ คุณสามารถใช้ชื่อการดำเนินการเพื่อลบ ยกเลิก หรือตรวจสอบสถานะการดำเนินการได้

ชื่อการดำเนินการนำหน้าด้วย projects/[PROJECT_ID]/databases/(default)/operations/ ตัวอย่างเช่น:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

อย่างไรก็ตาม คุณสามารถเว้นคำนำหน้าเมื่อระบุชื่อการดำเนินการสำหรับคำสั่ง describe cancel และ delete

แสดงรายการการดำเนินการส่งออกและนำเข้าทั้งหมด

Google Cloud Console

คุณสามารถดูรายการการส่งออกและนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก Cloud Firestore ของคอนโซล Google Cloud Platform

ไปที่หน้านำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations list เพื่อดูการดำเนินการส่งออกและนำเข้าที่กำลังทำงานและเพิ่งเสร็จสิ้นล่าสุด:

gcloud firestore operations list

ตรวจสอบสถานะการทำงาน

Google Cloud Console

คุณสามารถดูสถานะของการดำเนินการส่งออกหรือนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก Cloud Firestore ของคอนโซล Google Cloud Platform

ไปที่หน้านำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations describe เพื่อแสดงสถานะของการดำเนินการส่งออกหรือนำเข้า

gcloud firestore operations describe [OPERATION_NAME]

ประมาณการเวลาที่เสร็จสิ้น

คำขอสถานะของการดำเนินการที่ใช้เวลานานจะส่งคืน workEstimated และ workCompleted เมทริกเหล่านี้ส่งคืนทั้งจำนวนไบต์และจำนวนของเอนทิตี:

  • workEstimated แสดงจำนวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะดำเนินการ

  • workCompleted แสดงจำนวนไบต์และเอกสารที่ประมวลผลแล้ว หลังจากการดำเนินการเสร็จสิ้น ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ได้รับการประมวลผลจริง ซึ่งอาจมากกว่าค่าของ workEstimated

แบ่ง workCompleted ตามงาน workEstimated ความคืบหน้าคร่าวๆ การประมาณนี้อาจไม่ถูกต้อง เนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า

ยกเลิกการดำเนินการ

Google Cloud Console

คุณยกเลิกการดำเนินการส่งออกหรือนำเข้าที่ทำงานอยู่ได้ในหน้า นำเข้า/ส่งออก Cloud Firestore ของคอนโซล Google Cloud Platform

ไปที่หน้านำเข้า/ส่งออก

ในตาราง การนำเข้าและส่งออกล่าสุด การดำเนินการที่กำลังดำเนินการอยู่จะมีปุ่ม ยกเลิก ในคอลัมน์ที่ เสร็จสมบูรณ์ คลิกปุ่ม ยกเลิก เพื่อหยุดการทำงาน ปุ่มจะเปลี่ยนเป็นข้อความ กำลังยกเลิก แล้วเปลี่ยนเป็น ยกเลิก เมื่อการดำเนินการหยุดโดยสมบูรณ์

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 ก่อนจึงจะใช้บริการส่งออกและนำเข้าที่มีการจัดการ การดำเนินการส่งออกและนำเข้าจะถูกเรียกเก็บสำหรับการอ่านและเขียนเอกสารตามอัตราที่ระบุไว้ใน ราคาของ Cloud Firestore

ค่าใช้จ่ายในการดำเนินการส่งออกและนำเข้าจะไม่นับรวมใน วงเงินใช้จ่าย ของคุณ การดำเนินการส่งออกหรือนำเข้าจะไม่ทริกเกอร์การแจ้งเตือน งบประมาณ Google Cloud ของคุณจนกว่าจะเสร็จสิ้น ในทำนองเดียวกัน การอ่านและเขียนที่ดำเนินการระหว่างการส่งออกหรือการนำเข้าจะถูกนำไปใช้กับ โควตารายวัน ของคุณหลังจากการดำเนินการเสร็จสิ้น การดำเนินการส่งออกและนำเข้าจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล

กำลังดูต้นทุนการส่งออกและนำเข้า

การดำเนินการส่งออกและนำเข้าจะใช้ป้ายกำกับ goog-firestoremanaged:exportimport กับการดำเนินการที่เรียกเก็บเงิน ใน หน้ารายงานการเรียกเก็บเงินในระบบคลาวด์ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก:

เข้าถึงป้ายกำกับที่มีการจัดการ goog-firestore จากเมนูตัวกรอง

ส่งออกไปยัง BigQuery

คุณโหลดข้อมูลจากการส่งออก Cloud Firestore ไปยัง BigQuery ได้ แต่เฉพาะในกรณีที่คุณระบุตัวกรอง collection-ids เท่านั้น ดู การโหลดข้อมูลจากการส่งออก Cloud Firestore

ขีดจำกัดคอลัมน์ BigQuery

BigQuery กำหนดขีดจำกัด 10,000 คอลัมน์ต่อตาราง การดำเนินการส่งออกของ Cloud Firestore จะสร้างสคีมาตาราง BigQuery สำหรับแต่ละกลุ่มคอลเล็กชัน ในสคีมานี้ ชื่อฟิลด์ที่ไม่ซ้ำกันแต่ละชื่อภายในกลุ่มคอลเลกชันจะกลายเป็นคอลัมน์สคีมา

หากสคีมา BigQuery ของกลุ่มคอลเลกชันเกิน 10,000 คอลัมน์ การดำเนินการส่งออก Cloud Firestore จะพยายามอยู่ภายใต้ขีดจำกัดคอลัมน์โดยถือว่าช่องแผนที่เป็นไบต์ หากการแปลงนี้ทำให้จำนวนคอลัมน์ต่ำกว่า 10,000 คุณสามารถโหลดข้อมูลลงใน BigQuery ได้ แต่จะค้นหาช่องย่อยภายในช่องแผนที่ไม่ได้ หากจำนวนคอลัมน์ยังคงเกิน 10,000 การดำเนินการส่งออกจะไม่สร้างสคีมา BigQuery สำหรับกลุ่มคอลเล็กชัน และคุณจะโหลดข้อมูลลงใน BigQuery ไม่ได้

ส่งออกรูปแบบและไฟล์ข้อมูลเมตา

ผลลัพธ์ของการส่งออกที่มีการจัดการใช้ รูปแบบบันทึก LevelDB

ไฟล์ข้อมูลเมตา

การดำเนินการส่งออกจะสร้างไฟล์ข้อมูลเมตาสำหรับแต่ละกลุ่มคอลเลกชันที่คุณระบุ ไฟล์ข้อมูลเมตาโดยทั่วไปจะมีชื่อว่า ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata

ไฟล์ข้อมูลเมตาเป็นบัฟเฟอร์ของโปรโตคอล และคุณสามารถถอดรหัสได้ด้วย คอมไพเลอร์โปรโตคอล protoc ตัวอย่างเช่น คุณสามารถถอดรหัสไฟล์ข้อมูลเมตาเพื่อกำหนดกลุ่มคอลเล็กชันที่ไฟล์เอ็กซ์พอร์ตประกอบด้วย:

protoc --decode_raw < export0.export_metadata

การโยกย้ายตัวแทนบริการ

ตอนนี้คุณสามารถใช้ตัวแทนบริการ Cloud Firestore เพื่ออนุญาตการดำเนินการนำเข้าและส่งออกแทนบัญชีบริการ App Engine ตัวแทนบริการและบัญชีบริการใช้หลักการตั้งชื่อต่อไปนี้:

ตัวแทนบริการ Cloud Firestore
service- project_number @gcp-sa-firestore.iam.gserviceaccount.com
บัญชีบริการ App Engine
project_id @appspot.gserviceaccount.com

ควรใช้เอเจนต์บริการ Cloud Firestore เนื่องจากเป็นบริการเฉพาะสำหรับ Cloud Firestore บัญชีบริการ App Engine มีการแชร์มากกว่าหนึ่งบริการ

ดูบัญชีการให้สิทธิ์

คุณดูได้ว่าการดำเนินการนำเข้าและส่งออกของคุณใช้บัญชีใดในการอนุญาตคำขอจากหน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform คุณยังดูได้ด้วยว่าฐานข้อมูลของคุณใช้ตัวแทนบริการ Cloud Firestore อยู่แล้วหรือไม่

  1. ไปที่หน้า นำเข้า/ส่งออก Cloud Firestore ในคอนโซล Google Cloud Platform

    ไปที่นำเข้า/ส่งออก

  2. ดูบัญชีการให้สิทธิ์ถัดจากงาน นำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ

หากโปรเจ็กต์ของคุณไม่ได้ใช้เอเจนต์บริการ Cloud Firestore คุณสามารถย้ายไปยังเอเจนต์บริการ Cloud Firestore ได้โดยใช้เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้

ควรใช้เทคนิคแรกเหล่านี้เพราะจะปรับขอบเขตของเอฟเฟกต์ให้เป็นโปรเจ็กต์ Cloud Firestore เดียว ไม่แนะนำให้ใช้เทคนิคที่ 2 เนื่องจากไม่ย้ายข้อมูลสิทธิ์ของที่เก็บข้อมูล Cloud Storage ที่มีอยู่ อย่างไรก็ตาม มีการปฏิบัติตามข้อกำหนดด้านความปลอดภัยในระดับองค์กร

ย้ายข้อมูลโดยการตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage

กระบวนการย้ายข้อมูลมีสองขั้นตอน:

  1. อัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage ดูส่วนต่อไปนี้สำหรับรายละเอียด
  2. ยืนยันการย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore

สิทธิ์ของถังตัวแทนบริการ

สำหรับการดำเนินการส่งออกหรือนำเข้าที่ใช้ที่เก็บข้อมูล Cloud Storage ในโปรเจ็กต์ อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore สำหรับที่เก็บข้อมูลนั้น ตัวอย่างเช่น การดำเนินการที่ย้ายข้อมูลไปยังโปรเจ็กต์อื่นจำเป็นต้องเข้าถึงบัคเก็ตในโปรเจ็กต์อื่นนั้น มิฉะนั้น การดำเนินการเหล่านี้จะล้มเหลวหลังจากย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore

นำเข้าและส่งออกเวิร์กโฟลว์ที่อยู่ภายในโปรเจ็กต์เดียวกันไม่จำเป็นต้องเปลี่ยนแปลงสิทธิ์ Agent บริการ Cloud Firestore สามารถเข้าถึงบัคเก็ตในโปรเจ็กต์เดียวกันได้โดยค่าเริ่มต้น

อัปเดตสิทธิ์สำหรับที่เก็บข้อมูล Cloud Storage จากโปรเจ็กต์อื่นเพื่อให้สิทธิ์เข้าถึง service- project_number @gcp-sa-firestore.iam.gserviceaccount.com service agent มอบบทบาท Firestore Service Agent

บทบาท Firestore Service Agent ให้สิทธิ์การอ่านและเขียนสำหรับที่เก็บข้อมูล Cloud Storage หากคุณต้องการให้สิทธิ์อ่านอย่างเดียวหรือเขียนอย่างเดียว ให้ใช้ บทบาทที่กำหนดเอง

กระบวนการย้ายข้อมูลที่อธิบายไว้ในส่วนต่อไปนี้ช่วยให้คุณระบุที่เก็บข้อมูล Cloud Storage ที่อาจต้องมีการอัปเดตสิทธิ์

ย้ายโปรเจ็กต์ไปยัง Firestore Service Agent

ทำตามขั้นตอนต่อไปนี้เพื่อย้ายจากบัญชีบริการ App Engine ไปยังตัวแทนบริการ Cloud Firestore เมื่อเสร็จสิ้นแล้ว จะไม่สามารถยกเลิกการย้ายข้อมูลได้

  1. ไปที่หน้า นำเข้า/ส่งออก Cloud Firestore ในคอนโซล Google Cloud Platform

    ไปที่นำเข้า/ส่งออก

  2. หากโปรเจ็กต์ของคุณยังไม่ได้ย้ายไปยังตัวแทนบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายข้อมูลและปุ่ม ตรวจสอบสถานะ ที่เก็บข้อมูล ขั้นตอนต่อไปจะช่วยคุณระบุและแก้ไขข้อผิดพลาดในการอนุญาตที่อาจเกิดขึ้น

    คลิก ตรวจสอบสถานะถัง

    เมนูจะปรากฏขึ้นพร้อมตัวเลือกในการย้ายข้อมูลและรายการของที่เก็บข้อมูล Cloud Storage อาจใช้เวลาสักครู่ก่อนที่รายการจะโหลดเสร็จ

    รายการนี้รวมถึงบัคเก็ตที่เพิ่งใช้ในการดำเนินการนำเข้าและส่งออก แต่ปัจจุบันไม่ได้ให้สิทธิ์ในการอ่านและเขียนแก่ตัวแทนบริการ Cloud Firestore

  3. จดชื่อหลักของตัวแทนบริการ Cloud Firestore ของโปรเจ็กต์ของคุณ ชื่อตัวแทนบริการจะปรากฏภายใต้ ตัวแทนบริการเพื่อให้เข้าถึง ป้ายกำกับ
  4. สำหรับบัคเก็ตในรายการที่คุณจะใช้สำหรับการดำเนินการนำเข้าหรือส่งออกในอนาคต ให้ทำตามขั้นตอนต่อไปนี้:

    1. ในแถวตารางของที่เก็บข้อมูลนี้ ให้คลิก แก้ไข ซึ่งจะเปิดหน้าสิทธิ์ของที่เก็บข้อมูลนั้นในแท็บใหม่

    2. คลิก เพิ่ม
    3. ในฟิลด์ หลักการใหม่ ให้ป้อนชื่อตัวแทนบริการ Cloud Firestore ของคุณ
    4. ในฟิลด์ เลือก บทบาท เลือก Service Agents > Firestore Service Agent
    5. คลิก บันทึก
    6. กลับไปที่แท็บที่มีหน้านำเข้า/ส่งออกของ Cloud Firestore
    7. ทำซ้ำขั้นตอนเหล่านี้สำหรับที่เก็บข้อมูลอื่นๆ ในรายการ ตรวจสอบให้แน่ใจว่าได้ดูทุกหน้าของรายการ
  5. คลิก Migrate to Firestore Service Agent หากคุณยังมีที่เก็บข้อมูลซึ่งตรวจสอบสิทธิ์ไม่สำเร็จ คุณต้องยืนยันการย้ายข้อมูลโดยคลิก โอนย้าย

    การแจ้งเตือนจะแจ้งให้คุณทราบเมื่อการย้ายข้อมูลของคุณเสร็จสิ้น การย้ายข้อมูลไม่สามารถยกเลิกได้

ดูสถานะการย้ายข้อมูล

  1. หากต้องการตรวจสอบสถานะการย้ายข้อมูลของโปรเจ็กต์ ให้ไปที่หน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform:

    ไปที่นำเข้า/ส่งออก

  2. ค้นหาตัวการที่อยู่ถัดจากงาน นำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ

    หากตัวการคือ service- project_number @gcp-sa-firestore.iam.gserviceaccount.com ว่าโปรเจ็กต์ของคุณได้ย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore แล้ว การย้ายข้อมูลไม่สามารถยกเลิกได้

    หากยังไม่ได้ย้ายโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของเพจพร้อมปุ่ม ตรวจสอบสถานะบั คเก็ต โปรดดู ที่การย้ายข้อมูลไปยังตัวแทนบริการ Firestore เพื่อดำเนินการย้ายข้อมูลให้เสร็จสิ้น

เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร

  • กำหนดข้อจำกัดต่อไปนี้ในนโยบายขององค์กรของคุณ:

    ต้องการ Firestore Service Agent สำหรับการนำเข้า/ส่งออก ( firestore.requireP4SAforImportExport )

    ข้อจำกัดนี้จำเป็นต้องมีการดำเนินการนำเข้าและส่งออกเพื่อใช้ตัวแทนบริการ Cloud Firestore เพื่ออนุมัติคำขอ ในการตั้งค่าข้อจำกัดนี้ โปรดดู การสร้างและการจัดการนโยบายองค์กร

การใช้ข้อจำกัดนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์ที่เก็บข้อมูล Cloud Storage ที่เหมาะสมสำหรับ Agent บริการ Cloud Firestore โดยอัตโนมัติ

ถ้าข้อจำกัดสร้างข้อผิดพลาดในการอนุญาตสำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออกใดๆ คุณสามารถปิดใช้งานเพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจาก ตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage แล้ว คุณจะเปิดใช้ข้อจำกัดได้อีกครั้ง