คู่มือนี้แสดงวิธีย้ายข้อมูลส่วนขยายจากสภาพแวดล้อม Firebase Extensions ที่เลิกใช้งานแล้วไปยังชุดฟังก์ชันที่คุณติดตั้งและทำให้ใช้งานได้ใน Cloud Functions ของคุณเองได้ สำหรับฐานของโค้ด Firebase (รุ่นที่ 2)
Firebase Extensions จัดการทุกด้านของการสร้าง อัปเดต และนำส่วนขยายออก ชุดฟังก์ชันจะรวมความสามารถของส่วนขยายเป็น รุ่นที่ 2Cloud Functions for Firebase ทั่วไป เนื่องจากชุดฟังก์ชันเป็นมาตรฐาน Cloud Functions คุณจึงสร้าง อัปเดต ลบ และแก้ปัญหาได้โดยใช้ CLI ของ Firebase ภายในโปรเจ็กต์ Firebase คู่มือนี้จะช่วยให้คุณพร้อมจัดการฟังก์ชันในตอนนี้และนำการอัปเดตไปใช้เมื่อพร้อมใช้งาน
ตลอดทั้งคู่มือนี้ เราจะใช้ส่วนขยาย Stream Cloud Firestore to BigQuery (firestore-bigquery-export) เป็นตัวอย่างเพื่อแสดง
คำสั่งและเอาต์พุตจากคำสั่งสำหรับการย้ายข้อมูลแต่ละขั้นตอน
กำหนดเส้นทางการย้ายข้อมูล
Firebase ขอแนะนำให้ผู้เผยแพร่โฆษณา Firebase Extensions ทุกรายสร้างส่วนขยายทดแทนเป็นชุดฟังก์ชันที่เผยแพร่ใน npm คุณสามารถ ตรวจสอบว่ามีชุดฟังก์ชันทดแทนสำหรับส่วนขยายของคุณหรือไม่ได้ด้วยวิธีต่างๆ ดังนี้
- ไปที่หน้าส่วนขยายของFirebaseคอนโซล สำหรับโปรเจ็กต์ ส่วนขยายแต่ละรายการที่คุณติดตั้งจะระบุว่ามี ชุดฟังก์ชันทดแทนหรือไม่
เรียกใช้
firebase ext:listภายในโปรเจ็กต์ Firebase ในเทอร์มินัล เพื่อแสดงส่วนขยายที่ติดตั้งไว้ซึ่งมีส่วนขยายอย่างเป็นทางการมาแทนที่firebase ext:list --project my-projecti extensions: ensuring required API firebaseextensions.googleapis.com is enabled... ✔ extensions: required API firebaseextensions.googleapis.com is enabled i extensions: list of extensions installed in my-project: ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐ │ Extension │ Publisher │ Instance ID │ State │ Version │ Your last update │ Replacement Kit │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/firestore-bigquery-export │ firebase │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2 │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/storage-resize-images │ firebase │ storage-resize-images │ ACTIVE │ 0.3.6 │ 2026-06-03 17:41:24 │ │ └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘ ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
หากมีชุดฟังก์ชันอย่างเป็นทางการที่ใช้แทนส่วนขยาย คุณจะ ย้ายข้อมูลได้โดยใช้ส่วนย้ายข้อมูลไปยังชุดฟังก์ชันใน npm
หากไม่พบส่วนขยายทดแทนที่เผยแพร่แล้ว คุณสามารถ Fork โค้ดส่วนขยายและ สร้างส่วนขยายทดแทนของคุณเองได้ เนื่องจากส่วนขยายทั้งหมดเป็นโอเพนซอร์ส โดยทำตามคำแนะนำในย้ายข้อมูลไปยังชุดฟังก์ชันที่สร้างขึ้นเอง
| เลือกเส้นทางการย้ายข้อมูล: | ย้ายข้อมูลไปยังชุดฟังก์ชันใน npm ย้ายข้อมูลไปยังชุดฟังก์ชันที่สร้างขึ้นเอง |
ย้ายข้อมูลไปยังชุดฟังก์ชันใน npm
ตรวจสอบข้อจำกัดที่ทราบในการย้ายข้อมูล
ก่อนเริ่มย้ายข้อมูลอินสแตนซ์ของส่วนขยาย ให้ตรวจสอบว่าการตั้งค่าของคุณใช้ฟีเจอร์ต่อไปนี้ที่ต้องมีวิธีแก้ปัญหาหรือยังไม่รองรับในชุดฟังก์ชันหรือไม่
- ที่เก็บ Docker ที่กำหนดเองและคีย์ KMS ต้องมีการแก้ปัญหาด้วยตนเอง Cloud Functions for Firebase ไม่รองรับ พารามิเตอร์ของระบบทดแทนสำหรับการกำหนดค่าที่เก็บ Docker ที่กำหนดเองหรือ คีย์การเข้ารหัสที่ลูกค้าจัดการ (คีย์ KMS) หากส่วนขยายกำหนดค่าพารามิเตอร์ใดพารามิเตอร์หนึ่งต่อไปนี้ โปรดดูวิธีแก้ปัญหาชั่วคราวในคำถามที่พบบ่อย
ก่อนเริ่มต้น
คุณต้องตั้งค่า Firebase CLI และ
เริ่มต้นFirebase
โปรเจ็กต์ เมื่อใช้ CLI ให้ตรวจสอบว่าคุณใช้firebase-toolsเวอร์ชัน >= 15.32.0 ซึ่งมีคำสั่งการย้ายข้อมูลและชุดฟังก์ชันใหม่
สิทธิ์และบทบาทของบัญชีที่จำเป็น
บัญชีที่คุณใช้เพื่อตรวจสอบสิทธิ์ด้วย Firebase และ Google Cloud ต้องมีบทบาทต่อไปนี้ ทั้งนี้ขึ้นอยู่กับสิ่งที่ Firebase CLI ต้องสร้างและกำหนดค่าระหว่างการย้ายข้อมูล
roles/firebaseextensions.editorroles/cloudbuild.builds.editorroles/artifactregistry.writerroles/run.developerroles/iam.serviceAccountUserroles/iam.serviceAccountCreatorroles/cloudfunctions.admin(หากคุณต้องทำsetIamPermissionsสำหรับปลายทางสาธารณะ)roles/secretmanager.admin(หากใช้ข้อมูลลับ)roles/serviceusage.serviceUsageAdmin(หากคุณต้องเปิดใช้ API ใหม่)
เราขอแนะนำให้ใช้บัญชีที่เคยติดตั้งส่วนขยายและฟังก์ชันที่ใช้งานมาก่อน เนื่องจากสิทธิ์ส่วนใหญ่เหล่านี้จะได้รับแล้ว หากบัญชีที่จะย้ายข้อมูลต้องการบทบาทเพิ่มเติม ให้ทำตามGoogle Cloudวิธีการ IAM เพื่อเพิ่มบทบาท
เลือกเวิร์กโฟลว์ CLI
หากต้องการย้ายข้อมูลจากอินสแตนซ์ของส่วนขยายไปยังชุดฟังก์ชันที่มีใน npm ให้เลือก ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
- (แนะนํา) ย้ายข้อมูลโดยใช้คําสั่ง
ext:migrateCLI คำสั่งนี้ จะติดตั้งการเปลี่ยนชุดฟังก์ชันก่อนที่จะถอนการติดตั้งส่วนขยายที่ แทนที่ - ย้ายข้อมูลโดยใช้คำสั่ง CLI ของชุดฟังก์ชัน คุณสามารถ ใช้คำสั่งแยกต่างหากเพื่ออัปเดตส่วนขยาย ติดตั้งชุดฟังก์ชัน กำหนดค่าเหมือนส่วนขยาย ติดตั้งใช้งานชุด และถอนการติดตั้งส่วนขยาย ซึ่งจะช่วยให้คุณมีความยืดหยุ่นมากขึ้นในการจัดลำดับคำสั่งใหม่หรือ ทำงานเพิ่มเติมระหว่างขั้นตอน
ย้ายข้อมูลโดยใช้ ext:migrate
เริ่มการย้ายข้อมูลโดยเรียกใช้คำสั่งต่อไปนี้ 1 ครั้งต่ออินสแตนซ์ของส่วนขยาย
firebase ext:migrate --project <project-id>
คำสั่งนี้จะแนะนำขั้นตอนต่อไปนี้
- เลือกส่วนขยายที่จะย้ายข้อมูลซึ่งมีชุดฟังก์ชันอย่างเป็นทางการ ที่ใช้แทนได้
- การเลือกอินสแตนซ์ที่เฉพาะเจาะจงของส่วนขยายนั้น
- อัปเดตส่วนขยายเป็นเวอร์ชันล่าสุดหากจำเป็น
- การติดตั้งชุดฟังก์ชัน การกำหนดค่าอินสแตนซ์ให้เหมือนกับวิธีที่กำหนดค่าอินสแตนซ์ส่วนขยาย
- การติดตั้งใช้งานชุดฟังก์ชัน
- ยืนยันว่าชุดฟังก์ชันได้รับการติดตั้งใช้งานสำเร็จและเรียกใช้ฮุกวงจรทั้งหมด (หากมี)
- ถอนการติดตั้งอินสแตนซ์ส่วนขยาย
หากทราบส่วนขยายหรืออินสแตนซ์ส่วนขยายที่ต้องการย้ายข้อมูล ให้ระบุโดยใช้แฟล็กบรรทัดคำสั่งต่อไปนี้
firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>
# or
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>
หากคุณทราบแพ็กเกจที่ต้องการย้ายข้อมูล โดยเฉพาะอย่างยิ่งหากไม่ใช่แพ็กเกจทดแทนอย่างเป็นทางการที่ Google ระบุไว้ ให้ระบุแพ็กเกจดังกล่าวโดยใช้แฟล็ก --package ดังนี้
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>
ยืนยันการติดตั้งใช้งานชุดฟังก์ชัน
หากต้องการยืนยันว่า firebase deploy ของชุดไม่มีข้อผิดพลาด ให้ตรวจสอบ
บันทึกการติดตั้งใช้งานเพื่อดูว่ามีการเรียกใช้ฮุกลงในวงจรหรือไม่ ส่วนขยายยอดนิยม เช่น Stream Cloud Firestore to BigQuery จะใช้ฮุควงจร
ตัวอย่างลักษณะของ Lifecycle Hook เมื่อทริกเกอร์มีดังนี้
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
ข้อความบันทึกเหล่านี้ยืนยันข้อมูลต่อไปนี้
- พบและดำเนินการฮุกวงจรแล้ว
- มีการจัดคิวงานในคิวงานที่เชื่อมโยงของ Lifecycle Hook
- เราได้ระบุลิงก์ไปยัง Cloud Logging เพื่อให้คุณตรวจสอบได้ว่างาน เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
คลิกลิงก์บันทึกเพื่อไปที่Google Cloudคอนโซลเพื่อตรวจสอบว่าไม่มีข้อผิดพลาดในบันทึกและระบบประมวลผลเหตุการณ์คิวงานเรียบร้อยแล้ว หากเหตุการณ์ในวงจรทำงานไม่สำเร็จ คุณสามารถเรียกใช้เหตุการณ์อีกครั้งได้โดยเรียกใช้คำสั่งต่อไปนี้
firebase functions:lifecycle:run <hook-name> <codebase>
หากคุณกําลังติดตั้งใช้งานอินสแตนซ์ชุดฟังก์ชันเป็นครั้งแรก ให้เรียกใช้คําสั่งต่อไปนี้
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
หากตัดสินใจหยุดหรือยกเลิกการย้ายข้อมูลนี้เมื่อใดก็ตามในระหว่างการตรวจสอบ คุณสามารถถอนการติดตั้งชุดเครื่องมือได้โดยใช้คำสั่งในถอนการติดตั้งส่วนขยาย
อ่าน README ของชุดฟังก์ชัน
ชุดอุปกรณ์บางชุดอาจต้องมีการดำเนินการเพิ่มเติมนอกเหนือจากที่ฟังก์ชันชุดอุปกรณ์จัดการโดยอัตโนมัติ ดูREADMEสำหรับชุดอุปกรณ์ที่คุณกำลังติดตั้งและทำตามวิธีการเพิ่มเติม
ย้ายข้อมูลโดยใช้ CLI ของชุดฟังก์ชัน
ก่อนเริ่มต้น ให้ระบุและจดรหัสอินสแตนซ์ของส่วนขยายที่ต้องการย้ายข้อมูลไปยังชุดเครื่องมือ และชื่อแพ็กเกจ npm ของชุดเครื่องมือทดแทน คุณ
ดูทั้ง 2 อย่างนี้ได้โดยใช้เอาต์พุตของ firebase ext:list ดูตัวอย่างการใช้
ext:list ได้ที่
การกำหนดเส้นทางการย้ายข้อมูล
1. อัปเกรดอินสแตนซ์ของส่วนขยายเป็นเวอร์ชันล่าสุด
คุณต้องอัปเดตส่วนขยายเป็นเวอร์ชันล่าสุดเพื่อลดความแตกต่างระหว่างอินสแตนซ์ส่วนขยายกับชุดอุปกรณ์ทดแทน หากไม่ได้อัปเกรดส่วนขยาย อาจมีการเปลี่ยนแปลงที่สำคัญและทำให้เกิดข้อขัดข้องระหว่างอินสแตนซ์ส่วนขยายกับการเปลี่ยนชุดอุปกรณ์ การกำหนดค่าที่ส่งออกอาจไม่ตรงกับที่ชุดเครื่องมือคาดไว้เนื่องจากการเปลี่ยนแปลงพารามิเตอร์ในเวอร์ชันต่างๆ
ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่ออัปเดตส่วนขยาย โดยขึ้นอยู่กับตำแหน่งที่ติดตั้ง
- จากคอนโซล Firebase
- จาก Firebase CLI โดยใช้
firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>
หากข้ามขั้นตอนนี้ CLI จะแจ้งให้คุณอัปเกรดเมื่อส่งออก การกำหนดค่าหากส่วนขยายไม่ได้อยู่ในเวอร์ชันล่าสุด
2. ตรวจสอบและติดตั้งอินสแตนซ์ชุดฟังก์ชันทดแทน
คุณติดตั้งชุดฟังก์ชันได้โดยใช้คำสั่ง CLI ต่อไปนี้
firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>
เมื่อเลือกรหัสอินสแตนซ์สำหรับชุดอุปกรณ์ในระหว่างการติดตั้ง โปรด จดรหัสไว้เพื่อใช้ในวิธีการย้ายข้อมูลในภายหลัง
เมื่อติดตั้งชุดเครื่องมือแล้ว ระบบจะสร้างไดเรกทอรีใหม่ภายในโปรเจ็กต์ Firebase ที่มีตำแหน่ง เช่น function-kits/<kit-name>/source
ซึ่งมีแพ็กเกจ npm ที่มีชุดเครื่องมือแทนที่ส่วนขยาย และไฟล์ index.ts พื้นฐาน
ที่ส่งออกฟังก์ชันเหล่านั้นเพื่อให้ Firebase นำไปใช้และ
ตั้งค่ากำหนดเองได้
อ่านREADME สำหรับชุดเครื่องมือและทำตาม วิธีการเพิ่มเติมที่ระบุไว้
หากมีชุดเครื่องมือหลายอินสแตนซ์ในโปรเจ็กต์เดียวกัน คุณสามารถทำซ้ำ คำสั่งนี้เพื่อสร้างอินสแตนซ์ใหม่ของชุดเครื่องมือเดียวกัน นอกจากนี้ คุณยังติดตั้งใช้งานอินสแตนซ์ของชุดเครื่องมือเดียวใน 2 โปรเจ็กต์ Firebase ที่แตกต่างกันด้วยการกำหนดค่าที่ต่างกันได้ด้วย (เช่น โปรเจ็กต์การจัดเตรียมและโปรเจ็กต์การผลิต) หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าขั้นสูงเหล่านี้ โปรดดูการย้ายข้อมูลขั้นสูง
ตัวอย่างการคำนวณ
firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project
3. กำหนดค่าอินสแตนซ์ชุดฟังก์ชันให้เหมือนกับส่วนขยาย
คุณต้องปรับแต่งอินสแตนซ์ของชุดเครื่องมือนี้ด้วยการกำหนดค่าที่เหมือนกับส่วนขยายที่จะแทนที่ คุณสามารถส่งออกการกำหนดค่าอินสแตนซ์ของส่วนขยาย
เป็นไฟล์ .env ซึ่งจัดเก็บข้อมูลการกำหนดค่าพารามิเตอร์ ตัวแปรสภาพแวดล้อม และการอ้างอิงลับ
สำหรับ Cloud Functions ทั้งหมด รวมถึงชุดเครื่องมือ หากต้องการ
ส่งออกไปยังไฟล์การกำหนดค่าของชุดอุปกรณ์โดยตรง ให้เรียกใช้คำสั่งต่อไปนี้
firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>
เมื่อสิ้นสุดขั้นตอนนี้ ระบบจะจัดเก็บข้อมูลการกำหนดค่าสำหรับอินสแตนซ์นี้
ไว้ในไฟล์ .env เฉพาะโปรเจ็กต์ในไดเรกทอรีการกำหนดค่าอินสแตนซ์ เช่น
function-kits/<kit-name>/config-<instance-id>/.env.<project-id>
4. ติดตั้งใช้งานและยืนยันการเปลี่ยนชุดอุปกรณ์
เมื่อติดตั้งชุดอุปกรณ์และพร้อมใช้งานเป็นชุดฟังก์ชันแล้ว คุณจะ ติดตั้งการเปลี่ยนชุดอุปกรณ์ได้ ชุดฟังก์ชันทำงานเหมือนฟังก์ชันมาตรฐาน โดยแต่ละอินสแตนซ์ของชุดจะทำหน้าที่เป็นโค้ดเบสแยกต่างหาก สำหรับจัดระเบียบฟังก์ชัน คุณเลือกที่จะติดตั้งใช้งานฟังก์ชันทั้งหมดหรือ เฉพาะอินสแตนซ์ของชุดอุปกรณ์ก็ได้ ขณะย้ายข้อมูลอินสแตนซ์ส่วนขยายเดียว ให้ติดตั้งใช้งานเฉพาะอินสแตนซ์ชุดนั้น
หากชุดเครื่องมือใช้พารามิเตอร์ใหม่ที่ไม่มีอยู่ในอินสแตนซ์ส่วนขยาย
ที่คุณย้ายข้อมูลมาจาก Firebase CLI จะแจ้งให้คุณระบุพารามิเตอร์เหล่านั้นที่
จุดเริ่มต้นของกระบวนการติดตั้งใช้งาน ซึ่งไม่คาดว่าจะเกิดขึ้นในตัวอย่างที่ใช้งานได้นี้
จากส่วนขยาย firestore-bigquery-export ที่อัปเดตล่าสุด แต่คิตจํานวนมากจะแจ้ง
ให้ใช้พารามิเตอร์ใหม่สําหรับแหล่งที่มาของการทริกเกอร์เหตุการณ์ใดก็ตามที่คิตใช้ ในส่วนของการย้ายข้อมูลนี้ ชุดอุปกรณ์ที่อัปเดตจะใช้ฟังก์ชันรุ่นที่ 2 ในกรณีที่ส่วนขยายเคยใช้ฟังก์ชันรุ่นที่ 1 ในรุ่นที่ 2 ฟังก์ชันจะอยู่ใกล้กับแหล่งที่มาของเหตุการณ์
และเพิ่มเป็นพารามิเตอร์เพิ่มเติม ในการอัปเดตในอนาคต หากมีการเพิ่มพารามิเตอร์ใหม่
CLI จะแจ้งให้คุณทราบในการติดตั้งใช้งานครั้งถัดไป
ตัวอย่างการคำนวณ
firebase deploy --only functions:firestore-bigquery-export --project my-project
เอาต์พุต:
=== Deploying to 'my-project'...
i deploying functions
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i functions: ensuring required API bigquery.googleapis.com is enabled...
i functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔ functions: required APIs are enabled
i functions: granting declarative IAM roles to managed service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
✔ functions: successfully granted IAM roles
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔ functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔ Deploy complete!
หากต้องการยืนยันว่า firebase deploy ของชุดไม่มีข้อผิดพลาด ให้ตรวจสอบ
บันทึกการติดตั้งใช้งานเพื่อดูว่ามีการเรียกใช้ฮุกลงในวงจรหรือไม่ ส่วนขยายยอดนิยม เช่น Stream Cloud Firestore to BigQuery จะใช้ฮุควงจร
ตัวอย่างลักษณะของ Lifecycle Hook เมื่อทริกเกอร์มีดังนี้
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
ข้อความบันทึกเหล่านี้ยืนยันข้อมูลต่อไปนี้
- พบและดำเนินการฮุกวงจรแล้ว
- มีการจัดคิวงานในคิวงานที่เชื่อมโยงของ Lifecycle Hook
- เราได้ระบุลิงก์ไปยัง Cloud Logging เพื่อให้คุณตรวจสอบได้ว่างาน เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
คลิกลิงก์บันทึกเพื่อไปที่Google Cloudคอนโซลเพื่อตรวจสอบว่าไม่มีข้อผิดพลาดในบันทึกและระบบประมวลผลเหตุการณ์คิวงานเรียบร้อยแล้ว หากเหตุการณ์ในวงจรทำงานไม่สำเร็จ คุณสามารถเรียกใช้เหตุการณ์อีกครั้งได้โดยเรียกใช้คำสั่งต่อไปนี้
firebase functions:lifecycle:run <hook-name> <codebase>
หากคุณกําลังติดตั้งใช้งานอินสแตนซ์ชุดฟังก์ชันเป็นครั้งแรก ให้เรียกใช้คําสั่งต่อไปนี้
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
หากตัดสินใจหยุดหรือยกเลิกการย้ายข้อมูลนี้เมื่อใดก็ตามในระหว่างการตรวจสอบ คุณสามารถถอนการติดตั้งชุดเครื่องมือได้โดยใช้คำสั่งในถอนการติดตั้งส่วนขยาย
5. ถอนการติดตั้งส่วนขยาย
เมื่อยืนยันชุดฟังก์ชันที่ติดตั้งใช้งานแล้ว คุณจะถอนการติดตั้ง
ส่วนขยายได้เพื่อไม่ให้มีการทำซ้ำลักษณะการทำงานของส่วนขยาย 1 ครั้งสำหรับชุดฟังก์ชันและอีก 1 ครั้ง
สำหรับส่วนขยาย คุณถอนการติดตั้งส่วนขยายทั้งหมดจาก Firebase CLI
ได้ ไม่ว่าคุณจะติดตั้งส่วนขยายเหล่านั้นด้วยวิธีใดก็ตาม หากส่งแฟล็ก --immediate
firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate
ตัวอย่างการคำนวณ
firebase ext:uninstall firestore-bigquery-export --project my-project --immediate
เอาต์พุต:
i extensions: uninstalling firestore-bigquery-export...
i extensions: deleting extension instance resources in project my-project...
✔ extensions: successfully uninstalled firestore-bigquery-export
การย้ายข้อมูลขั้นสูง
คุณสามารถมีส่วนขยายในโปรเจ็กต์ Firebase หลายโปรเจ็กต์ที่ต้องการ
จัดการด้วยโค้ดเบสเดียว ตัวอย่างเช่น หากคุณติดตั้งใช้งานโครงสร้างพื้นฐานเดียวกันในสภาพแวดล้อม testing และสภาพแวดล้อม production ซึ่งแต่ละสภาพแวดล้อมมีอินสแตนซ์ documents Cloud Firestore ที่คุณส่งออกไปยัง BigQuery คุณอาจมีอินสแตนซ์ของส่วนขยาย firestore-bigquery-export ที่ติดตั้งไว้ 2 รายการ
export-documents-testingexport-documents-production
หากคุณย้ายข้อมูลอินสแตนซ์ส่วนขยายทั้ง 2 รายการนี้ไปยังอินสแตนซ์ชุดฟังก์ชัน 2 รายการใน ฐานของโค้ด เดียวเมื่อทำงานกับ Firebase CLI และทําการติดตั้งใช้งานโดยใช้ firebase deploy --project testing และ firebase deploy --project production การติดตั้งใช้งานแต่ละครั้งจะสร้างอินสแตนซ์ 2 รายการทั้งในสภาพแวดล้อม testing และ production
แต่ให้แทนที่อินสแตนซ์ของส่วนขยาย 2 รายการด้วยอินสแตนซ์ชุดฟังก์ชัน 1 รายการ
firestore-bigquery-export ที่ติดตั้งใช้งานในหลายโปรเจ็กต์ โดยแต่ละโปรเจ็กต์
มีการกำหนดค่าของตัวเอง ไดเรกทอรีการกำหนดค่าสำหรับอินสแตนซ์ควรมีลักษณะดังนี้
config-export-documents/.env.testing.env.production
การติดตั้งใช้งานแต่ละครั้งใน testing และ production จะสร้างอินสแตนซ์ของชุดเครื่องมือ 1 รายการ
พร้อมการกำหนดค่าที่เกี่ยวข้อง คำสั่ง CLI ที่มีอยู่จะสร้างการตั้งค่านี้
ตราบใดที่คุณส่งแฟล็ก --project ในการเรียกใช้แต่ละครั้งของ
ext:migrate หรือ functions:kits:install
ตัวอย่างการคำนวณ
firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔ Wrote function-kits/firestore-bigquery-export/source/package.json
✔ Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔ Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔ Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i functions: Running npm install
✔ Wrote configuration info to firebase.json
✔ functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
--kit-instance export-documents --project testing
# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
--kit-instance export-documents --project production
ตอนนี้คุณมีอินสแตนซ์ชุดเครื่องมือเดียวที่กำหนดค่าให้ติดตั้งใช้งานในโปรเจ็กต์ testing และ
production โดยมีการกำหนดค่าที่เกี่ยวข้อง หากคุณสร้างอินสแตนซ์ในโปรเจ็กต์ testing และเรียกใช้คำสั่ง functions:kits:install
สำหรับแพ็กเกจเดียวกันในโปรเจ็กต์ production ระบบจะแจ้งให้คุณเลือก
ตัวเลือกเพื่อใช้อินสแตนซ์ที่กำหนดค่าไว้สำหรับ testing ซ้ำ หรือติดตั้งอินสแตนซ์ที่ 2