หลังจากย้ายข้อมูลจาก Firebase Extensions ไปยังชุดฟังก์ชันแล้ว คุณจะจัดการอินสแตนซ์ชุดเป็น Cloud Functions รุ่นที่ 2 มาตรฐานในโปรเจ็กต์ Firebase คู่มือนี้ครอบคลุมวิธีติดตั้งชุดฟังก์ชันใหม่จาก npm โดยตรงโดยไม่ต้องย้ายข้อมูลส่วนขยายที่มีอยู่ อัปเดตพารามิเตอร์ชุดและตัวเลือกส่วนกลาง อัปเกรดเวอร์ชันแพ็กเกจ npm เมื่อผู้เผยแพร่เผยแพร่การอัปเดต และย้อนกลับการย้ายข้อมูลหากจำเป็น
การใช้ชุดฟังก์ชันจากแพ็กเกจ npm โดยไม่ต้องย้ายข้อมูล
หากคุณไม่ได้ย้ายข้อมูลจากส่วนขยาย การใช้ชุดฟังก์ชันจะประกอบด้วย 2 ส่วนดังนี้
การติดตั้งชุดอุปกรณ์
คุณติดตั้งชุดฟังก์ชันได้โดยใช้คำสั่ง CLI ต่อไปนี้
firebase functions:kits:install --package <npm-package-name>
ตัวอย่างที่อธิบายอย่างละเอียด
firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project my-project
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? firestore-bigquery-export
i function-kits/firestore-bigquery-export/source/package.json is unchanged
i function-kits/firestore-bigquery-export/source/tsconfig.json is unchanged
i function-kits/firestore-bigquery-export/source/.gitignore is unchanged
i functions: Running npm install @firebase-function-kits/firestore-bigquery-export@next --save-prefix=^...
i functions: Building TypeScript source...
✔ Wrote configuration info to firebase.json
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
✔ Enter a string value for FUNCTION_DEFAULT_REGION:
(Global default region where functions should be deployed. Can be overridden per-function.) us-east1
✔ Enter a string value for BigQuery Project ID:
(Override the default project for BigQuery instance. This can allow updates to be directed to a BigQuery
instance on another GCP project.) my-bigquery-project
✔ Enter a string value for Firestore Instance ID:
(The Firestore database to use. Use "(default)" for the default database. You can view your available
Firestore databases at https://console.cloud.google.com/firestore/databases.) eu-testing
# Omitting many more parameters for brevity
✔ Wrote configuration info to firebase.json
✔ functions: Function kit firestore-bigquery-export successfully installed.
i functions: At the first deploy, the following functions will be created in your project:
- kit-firestore-bigquery-export-fsexportbigquery
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i functions: At the first deploy, the following Task Queues will be created in your project:
- kit-firestore-bigquery-export-initBigQuerySync
- kit-firestore-bigquery-export-setupBigQuerySync
i functions: At the first deploy, the following APIs will be enabled in your project:
- bigquery.googleapis.com
- cloudtasks.googleapis.com
i functions: At the first deploy, the following roles will be granted to the kit service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
⚠ functions: Please review the changes above. If you do not want them applied to your project, uninstall this kit before running firebase deploy.
การเปลี่ยนตัวเลือกส่วนกลางเริ่มต้น
หากต้องการกำหนดค่าตัวเลือกส่วนกลางสำหรับอินสแตนซ์ชุด ให้แก้ไขไฟล์ index.ts ที่อยู่ใน function-kits/<your-kit-id>/source/src/index.ts
หากต้องการให้แชร์ค่าเริ่มต้นในทุกอินสแตนซ์ของชุด ให้ตั้งค่าโดยตรงใน index.ts หรือสร้างพารามิเตอร์ที่ตั้งค่าต่ออินสแตนซ์ โดยทำตามตัวอย่างและวิธีการที่ระบุไว้ใน index.ts
กำลังติดตั้งใช้งานชุดอุปกรณ์
หากต้องการติดตั้งใช้งานชุดฟังก์ชัน ให้เรียกใช้คำสั่งต่อไปนี้
firebase deploy --only functions:<kit-instance-id>
ตัวอย่างที่อธิบายอย่างละเอียด
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!
การติดตั้งและทำให้ชุดอุปกรณ์ใช้งานได้จะดำเนินการต่อไปนี้
- สร้าง
function-kits/firestore-bigquery-export/sourceซึ่งมีแหล่งที่มาของชุดอุปกรณ์ รวมถึงไฟล์index.tsพื้นฐานที่นำเข้าและส่งออกแพ็กเกจชุดอุปกรณ์ขณะตั้งค่าพารามิเตอร์ที่ให้คุณเลือกตำแหน่งที่แตกต่างกันสำหรับชุดอุปกรณ์แต่ละอินสแตนซ์ - สร้าง
function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.<project-id>และป้อนข้อมูลการกำหนดค่าที่ป้อนสำหรับฟังก์ชัน หากการอัปเดตในอนาคตมีการเพิ่มพารามิเตอร์ใหม่ ระบบจะแจ้งให้คุณทราบในการติดตั้งใช้งานครั้งถัดไป - สร้างทรัพยากร Google Cloud ที่จำเป็นเพื่อเรียกใช้ชุดนี้ ซึ่งรวมถึงบัญชีบริการที่มีบทบาท IAM, ฟังก์ชัน, ทริกเกอร์ Eventarc และคิวงาน Cloud Tasks ที่เฉพาะเจาะจง
หากมีชุดอุปกรณ์หลายชุดในโปรเจ็กต์เดียวกัน คุณสามารถทำซ้ำคำสั่งเหล่านี้เพื่อสร้างและติดตั้งใช้งานชุดอุปกรณ์เดียวกันชุดใหม่ได้ นอกจากนี้ คุณยังติดตั้งใช้งานอินสแตนซ์ชุดเครื่องมือเดียวในโปรเจ็กต์ Firebase หลายโปรเจ็กต์ที่มีการกำหนดค่าต่างกันได้ด้วย (เช่น โปรเจ็กต์ทดลองใช้และโปรเจ็กต์เวอร์ชันที่ใช้งานจริง) ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าขั้นสูงได้ที่หัวข้อการย้ายข้อมูลขั้นสูง
การถอนการติดตั้งชุดอุปกรณ์
หากต้องการนำชุดอุปกรณ์และอินสแตนซ์ทั้งหมดออก ให้เรียกใช้คำสั่งต่อไปนี้
firebase functions:kits:uninstall --kit <kit-id>
การดำเนินการนี้จะลบอินสแตนซ์ทั้งหมดและการกำหนดค่าของอินสแตนซ์เหล่านั้น รวมถึงนำแหล่งที่มาของชุดอุปกรณ์ออกจากดิสก์
หากต้องการนำชุดอุปกรณ์ออกเพียงชุดเดียว ให้เรียกใช้คำสั่งต่อไปนี้
firebase functions:kits:uninstall --instance <kit-instance-id>
หากคุณมีชุดอุปกรณ์เพียงชุดเดียว การดำเนินการนี้จะถอนการติดตั้งทั้งชุด
การอัปเดตการกำหนดค่าชุดอุปกรณ์
ในระหว่างการติดตั้งหรือการติดตั้งใช้งานครั้งแรก ระบบจะแจ้งให้คุณกำหนดค่าพารามิเตอร์ทั้งหมดสำหรับชุดอุปกรณ์ (เว้นแต่คุณจะย้ายข้อมูลการกำหนดค่าจากส่วนขยาย)
พารามิเตอร์เหล่านี้จะจัดเก็บไว้ในไฟล์ .env ในไดเรกทอรีการกำหนดค่าอินสแตนซ์ของชุดเครื่องมือ ตัวอย่างเช่น หากคุณมีอินสแตนซ์ชุดเครื่องมือชื่อ firestore-bigquery-export ในโปรเจ็กต์ my-project ไฟล์ .env จะอยู่ที่ function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
ซึ่งจะมีลักษณะดังนี้
DATASET_LOCATION=us
BIGQUERY_PROJECT_ID=my-project
DATABASE=eu-testing
DATABASE_REGION=eur3
COLLECTION_PATH=posts
WILDCARD_IDS=false
DATASET_ID=firestore_export
TABLE_ID=posts
TABLE_PARTITIONING=NONE
TIME_PARTITIONING_FIELD=
TIME_PARTITIONING_FIRESTORE_FIELD=
TIME_PARTITIONING_FIELD_TYPE=omit
CLUSTERING=
MAX_DISPATCHES_PER_SECOND=100
VIEW_TYPE=view
MAX_STALENESS=
REFRESH_INTERVAL_MINUTES=
BACKUP_COLLECTION=
TRANSFORM_FUNCTION=
USE_NEW_SNAPSHOT_QUERY_SYNTAX=no
EXCLUDE_OLD_DATA=no
KMS_KEY_NAME=
MAX_ENQUEUE_ATTEMPTS=3
LOG_LEVEL=info
FUNCTION_DEFAULT_REGION=us-west1
หากทราบค่าการกำหนดค่าที่ต้องการเปลี่ยนแปลง คุณสามารถแก้ไขค่าดังกล่าวได้โดยตรงในไฟล์ .env หากต้องการใช้ข้อความแจ้งแบบอินเทอร์แอกทีฟที่ทำงานระหว่างการติดตั้งและการทำให้ใช้งานได้ ให้นำพารามิเตอร์ที่ต้องการเปลี่ยนออกจากไฟล์ .env แล้วทำให้ชุดอินสแตนซ์ใช้งานได้อีกครั้ง ระบบจะแจ้งให้คุณป้อนพารามิเตอร์เหล่านั้นระหว่างการติดตั้งใช้งาน
เช่น หากคุณลบบรรทัด COLLECTION_PATH=posts และทำให้ใช้งานได้ ระบบจะแจ้งให้คุณป้อนข้อมูลดังกล่าวในระหว่างการทำให้ใช้งานได้ ดังนี้
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export-d9cd/.env.my-project
Prompting for parameters for codebase firestore-bigquery-export:
Collection path: What is the path of the collection that you would like to export? You may use {wildcard} notation to match a subcollection of all documents in a collection (for example: chatrooms/{chatid}/posts). Parent Firestore Document IDs from {wildcards} can be returned in path_params as a JSON formatted string.
? Enter a string value for Collection path: (posts)
การบำรุงรักษาและการอัปเกรดชุดฟังก์ชัน
ผู้เผยแพร่อาจอัปเดตแพ็กเกจ npm เป็นระยะๆ เพื่อแก้ไขข้อบกพร่อง เพิ่มฟีเจอร์ อัปเดตทรัพยากร Dependency หรือแก้ไขช่องโหว่ด้านความปลอดภัย เราขอแนะนำให้คุณติดตามการอัปเดตรุ่นเหล่านี้และติดตั้งการอัปเดต โดยเฉพาะการอัปเดตที่จัดการกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น
คำสั่ง functions:kits:install จะสร้างฐานของโค้ดที่ติดตั้งชุดเครื่องมือเป็นแพ็กเกจ npm และส่งออกฟังก์ชันทั้งหมดสำหรับชุดเครื่องมือแต่ละอินสแตนซ์
หากต้องการอัปเกรดชุด ให้เปลี่ยนเวอร์ชันแพ็กเกจ แล้วติดตั้งใช้งานแต่ละอินสแตนซ์ของชุดอีกครั้งเพื่อใช้การเปลี่ยนแปลง
การตรวจสอบว่าชุดอุปกรณ์มีการอัปเดตหรือไม่
ไปที่ไดเรกทอรี source ของชุดอุปกรณ์ที่ function-kits/<your-kit-id>/source จากไดเรกทอรี source นี้ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อรับรายงานเกี่ยวกับแพ็กเกจ npm ที่ล้าสมัยทั้งหมด รวมถึงชุดฟังก์ชันและ SDK Cloud Functions
npm outdated
หากคุณใช้เครื่องมือเพื่อระบุทรัพยากร Dependency ที่ต้องอัปเดตอยู่แล้ว เช่น Dependabot สำหรับ GitHub เราขอแนะนำให้ผสานรวมไดเรกทอรีชุดเครื่องมือเข้ากับเวิร์กโฟลว์ดังกล่าว
การอัปเดตชุดอุปกรณ์
หากต้องการอัปเดตชุดเครื่องมือและทรัพยากร Dependency เป็นเวอร์ชันล่าสุดที่ไม่ส่งผลกับส่วนอื่นในระบบ (ไม่รวมการอัปเดตเวอร์ชันหลักที่อาจมีการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ) ให้เรียกใช้คำสั่งต่อไปนี้
npm update --save
หากต้องการอัปเดตเฉพาะแพ็กเกจชุดฟังก์ชันและไม่อัปเดตแพ็กเกจอื่นๆ ให้ส่งชื่อแพ็กเกจไปยัง npm update ดังนี้
npm update <package-name> --save
หากต้องการอัปเกรดแพ็กเกจเป็นเวอร์ชันหลักล่าสุด (ซึ่งอาจทำให้เกิดการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ) ให้เรียกใช้คำสั่งต่อไปนี้
npm update --save <npm-package-name>@latest
ตรวจสอบเอกสารประกอบของแพ็กเกจและบันทึกประจำรุ่นเพื่อดูว่ามีอะไรเปลี่ยนแปลงบ้าง และคุณต้องดำเนินการขั้นตอนเพิ่มเติมก่อนหรือหลังการทำให้ใช้งานได้หรือไม่ เพื่อป้องกันการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
กำลังติดตั้งใช้งานอินสแตนซ์ที่อัปเดต
การเรียกใช้ npm update จะอัปเดตเฉพาะซอร์สโค้ดในเครื่องเท่านั้น หากต้องการอัปเดตฟังก์ชันที่ทำงานอยู่ในระบบคลาวด์ ให้ทำให้ใช้งานได้อีกครั้ง คุณสามารถทำให้ฟังก์ชันทั้งหมดในโปรเจ็กต์ใช้งานได้อีกครั้ง รวมถึงชุดฟังก์ชันทั้งหมด โดยเรียกใช้คำสั่งต่อไปนี้
firebase deploy --only functions
การยกเลิกการย้ายข้อมูล
หากต้องการยกเลิกการย้ายข้อมูล ให้ติดตั้งส่วนขยายอีกครั้งก่อน คุณสามารถใช้ไฟล์ .env ของชุดเพื่อค้นหาค่าการกำหนดค่าที่จำเป็นในระหว่างการติดตั้ง
หลังจากติดตั้งใช้งานส่วนขยายแล้ว ให้ถอนการติดตั้งอินสแตนซ์ชุด (ซึ่งจะถอนการติดตั้งทั้งชุดหากเป็นอินสแตนซ์สุดท้ายที่เหลืออยู่) โดยทำดังนี้
firebase functions:kits:uninstall --instance <kit-instance-id> --project <project-id>
การบันทึกการกำหนดค่าส่วนขยายสำหรับการย้ายข้อมูลในอนาคต
หลังจากวันที่ 31 มีนาคม 2027 คุณจะไม่สามารถดึงข้อมูลการกำหนดค่าส่วนขยายที่มีอยู่ได้ หากคุณไม่สามารถย้ายข้อมูลก่อนวันที่ 31 มีนาคม 2027 เราขอแนะนำอย่างยิ่งให้บันทึกส่วนขยายไว้เผื่อว่าคุณตัดสินใจย้ายข้อมูลหลังจากวันที่ดังกล่าว
ดูรายการรหัสอินสแตนซ์ของส่วนขยายโดยทำดังนี้
คุณใช้คำสั่ง CLI
ext:listเพื่อดูรายการอินสแตนซ์ส่วนขยายทั้งหมดในโปรเจ็กต์ Firebase ได้ โดยทำดังนี้firebase ext:list --project <project-id>ตัวอย่างที่อธิบายอย่างละเอียด
firebase ext:list --project my-project» firebase ext:list i extensions: ensuring 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.3 │ 2026-09-06 22:31:04 │ @firebase-function-kits/firestore-bigquery-export │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/firestore-bigquery-export │ firebase │ firestore-bigquery-export │ ACTIVE │ 0.3.2 │ 2026-06-03 17:41:24 │ @firebase-function-kits/firestore-bigquery-export │ └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘ ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshootingคำสั่ง
ext:listยังมีรูปแบบเอาต์พุต JSON ด้วย และหากคุณติดตั้งยูทิลิตี jq ไว้ คุณสามารถใช้ยูทิลิตีนี้เพื่อรับรายการรหัสอินสแตนซ์ทั้งหมดสำหรับโปรเจ็กต์ได้firebase ext:list --json --project <project-id> | jq -r '.result[].instanceId'ตัวอย่างที่อธิบายอย่างละเอียด
firebase ext:list --json --project my-project | jq -r '.result[].instanceId'เอาต์พุต:
firestore-bigquery-export-zbrp firestore-bigquery-exportส่งออกการกำหนดค่าสำหรับแต่ละอินสแตนซ์โดยทำดังนี้
สำหรับแต่ละอินสแตนซ์ คุณสามารถบันทึกการกำหนดค่าในดิสก์ได้โดยเรียกใช้คำสั่งส่งออกต่อไปนี้
firebase ext:export --mode functions --project <project-id> --instance <your-instance-id>ตัวอย่างที่อธิบายอย่างละเอียด
firebase ext:export --mode functions --project my-project --instance firestore-bigquery-exportเอาต์พุต:
i extensions: ensuring required API firebaseextensions.googleapis.com is enabled... i functions: Saving exported extensions config as a Function Kits .env file i functions: Created new local file firestore-bigquery-export/.env.testing to store param values. We suggest explicitly adding or excluding this file from version control. i functions: Loaded environment variables from firestore-bigquery-export/.env.testing i functions: Loaded environment variables from firestore-bigquery-export/.env.testing i functions: Writing new parameter values to disk: firestore-bigquery-export/.env.testingในดิสก์ คุณจะเห็นการส่งออกอินสแตนซ์ของส่วนขยายนี้ในตำแหน่ง เช่น
<instance-id>/.env.<project-id>ในตัวอย่างนี้คือfirestore-bigquery-export/.env.my-projectคุณสามารถทำขั้นตอนนี้ซ้ำได้ 1 ครั้งต่ออินสแตนซ์ ซึ่งจะสร้างชุดไฟล์
.envที่มีการกำหนดค่าอินสแตนซ์ส่วนขยายทั้งหมดที่สามารถนำมาใช้ซ้ำได้ในภายหลังโดยเป็นส่วนหนึ่งของการย้ายข้อมูลย้ายไฟล์
.envที่ส่งออกไปยังตำแหน่งที่ดีกว่า โดยทำดังนี้ระบบจะวางไฟล์
.envที่ส่งออกจากส่วนขยายไว้ในโปรเจ็กต์ Firebase โดยตรง แต่ไม่จำเป็นต้องใช้เป็นประจำทุกวันหากคุณยังไม่ได้ย้ายข้อมูลไปยังชุดฟังก์ชัน คุณสามารถย้ายไฟล์จากโปรเจ็กต์ไปยังตำแหน่งจัดเก็บข้อมูลอื่นๆ ที่เหมาะสมจนกว่าจะต้องการใช้ในอนาคต หรือเลือกที่จะลบไฟล์เหล่านั้นก็ได้