พารามิเตอร์เป็นกลไกที่ผู้ใช้ปรับแต่งแต่ละอินสแตนซ์ที่ติดตั้งของส่วนขยาย พารามิเตอร์เป็นเหมือนตัวแปรสภาพแวดล้อมสำหรับส่วนขยาย ค่าสำหรับพารามิเตอร์สามารถ เติมโดยอัตโนมัติ (ได้จาก Firebase หลังการติดตั้ง) หรือ กำหนดค่าโดยผู้ใช้ (ระบุโดยผู้ใช้ระหว่างการติดตั้ง)
พารามิเตอร์เหล่านี้พร้อมให้คุณอ้างอิงในซอร์สโค้ดฟังก์ชันของส่วนขยาย ไฟล์ extension.yaml
และไฟล์ POSTINSTALL.md
ของคุณ ต่อไปนี้เป็นไวยากรณ์สำหรับวิธีอ้างอิงพารามิเตอร์ชื่อ PARAMETER_NAME
:
ภายในซอร์สโค้ดฟังก์ชันของคุณ ให้ใช้ โมดูล
params
(เช่นparams.defineInt(" PARAMETER_NAME ")
) หรือprocess.env. PARAMETER_NAME
ภายใน
extension.yaml
และPOSTINSTALL.md
ให้ใช้${param: PARAMETER_NAME }
หลังการติดตั้ง คอนโซล Firebase จะแสดงเนื้อหาของไฟล์
POSTINSTALL.md
และเติมการอ้างอิงพารามิเตอร์ด้วยค่า จริง สำหรับอินสแตนซ์ที่ติดตั้ง
พารามิเตอร์ที่เติมอัตโนมัติ
อินสแตนซ์ส่วนขยายที่ติดตั้งแต่ละรายการจะมีสิทธิ์เข้าถึงพารามิเตอร์เริ่มต้นที่เติมข้อมูลอัตโนมัติหลายรายการที่ได้รับจาก Firebase โดยอัตโนมัติ (ดูตารางด้านล่าง) ค่าพารามิเตอร์เหล่านี้เป็นค่า เริ่มต้น สำหรับโปรเจ็กต์ Firebase (เช่น ที่เก็บข้อมูล เริ่มต้น ) หรือเป็นค่าเฉพาะส่วนขยาย (เช่น รหัสอินสแตนซ์ของส่วนขยาย)
ค่าพารามิเตอร์ที่เติมอัตโนมัติทั้งหมดไม่เปลี่ยนรูป ถูกกำหนดไว้ในขณะที่สร้างโปรเจ็กต์หรือการติดตั้งส่วนขยาย
แม้ว่า Firebase จะเติมค่าพารามิเตอร์เหล่านี้สำหรับส่วนขยายโดยอัตโนมัติ แต่ Firebase จะไม่จัดสรรผลิตภัณฑ์ที่เกี่ยวข้องให้กับผู้ใช้โดยอัตโนมัติในระหว่างการติดตั้ง ผู้ใช้ที่ติดตั้งส่วนขยายจะต้องเปิดใช้งานผลิตภัณฑ์ที่เกี่ยวข้องและเกี่ยวข้องในโปรเจ็กต์ของตนก่อนการติดตั้ง ตัวอย่างเช่น หากส่วนขยายของคุณเกี่ยวข้องกับ Cloud Firestore ผู้ใช้จะต้อง ตั้งค่า Cloud Firestore ในโปรเจ็กต์ของตน เราขอแนะนำให้แจ้งผู้ใช้ของคุณเกี่ยวกับข้อกำหนดเหล่านี้ใน ไฟล์ PREINSTALL.md
การอ้างอิงสำหรับพารามิเตอร์ที่เติมข้อมูลอัตโนมัติ | คำอธิบาย | ค่าพารามิเตอร์ (ได้จาก Firebase) |
---|---|---|
พารามิเตอร์ที่มีค่าเริ่มต้นจากโปรเจ็กต์ Firebase | ||
PROJECT_ID | ตัวระบุที่ไม่ซ้ำสำหรับโปรเจ็กต์ Firebase ที่ติดตั้งส่วนขยาย | รูปแบบทั่วไป: ค่าตัวอย่าง: |
DATABASE_URL | URL อินสแตนซ์ฐานข้อมูลเรียลไทม์ เริ่มต้น ของโปรเจ็กต์ Firebase | รูปแบบทั่วไป: ค่าตัวอย่าง: |
DATABASE_INSTANCE | ชื่ออินสแตนซ์ฐานข้อมูลเรียลไท ม์เริ่มต้น ของโปรเจ็กต์ Firebase โดยปกติแล้ว ค่านี้จะเหมือนกับรหัสโปรเจ็กต์ หรือลงท้ายด้วย | รูปแบบทั่วไป: ค่าตัวอย่าง: |
STORAGE_BUCKET | ชื่อที่เก็บข้อมูล Cloud Storage เริ่มต้น ของโปรเจ็กต์ Firebase | รูปแบบทั่วไป: ค่าตัวอย่าง: |
พารามิเตอร์ที่มีค่าเริ่มต้นจากการติดตั้งส่วนขยาย | ||
EXT_INSTANCE_ID | ตัวระบุเฉพาะสำหรับอินสแตนซ์ส่วนขยายที่ติดตั้ง ค่านี้สร้างขึ้นจาก ฟิลด์ | รูปแบบทั่วไปสำหรับอินสแตนซ์ที่ติดตั้งครั้งแรก (กำหนดโดยอัตโนมัติโดย Firebase ไม่สามารถ แก้ไขโดยผู้ใช้ระหว่างการติดตั้ง): ค่าตัวอย่าง: รูปแบบทั่วไปสำหรับอินสแตนซ์ที่ติดตั้งครั้งที่ 2 ขึ้นไป (กำหนดโดยอัตโนมัติโดย Firebase โดยผู้ใช้ สามารถ แก้ไขได้ระหว่างการติดตั้ง): ค่าตัวอย่าง: |
พารามิเตอร์ที่ผู้ใช้กำหนด
หากต้องการให้ผู้ใช้ปรับแต่งแต่ละอินสแตนซ์ที่ติดตั้งของส่วนขยาย คุณสามารถขอให้ผู้ใช้ระบุค่าพารามิเตอร์ระหว่างการติดตั้งได้ หากต้องการขอค่าเหล่านี้ คุณจะต้องตั้งค่าข้อความแจ้งในส่วน params
ของไฟล์ extension.yaml
ต่อไปนี้คือส่วน params
ตัวอย่าง ตามด้วยตารางที่อธิบายช่องพารามิเตอร์ที่มีอยู่ทั้งหมด
# extension.yaml
...
# Parameters (environment variables) for which the user specifies values during installation
params:
- param: DB_PATH
label: Realtime Database path
description: >-
What is the Realtime Database path where you will write new text
for sentiment analysis?
type: string
validationRegex: ^\S+$
validationErrorMessage: Realtime Database path cannot contain spaces.
example: path/to/posts
required: true
- param: TEXT_KEY
label: Key for text
description: What is the name of the key that will contain text to be analyzed?
type: string
default: textToAnalyze
required: true
ในส่วน params
ของไฟล์ extension.yaml
ให้ใช้ช่องต่อไปนี้เพื่อกำหนดพารามิเตอร์ที่ผู้ใช้กำหนดค่า:
สนาม | พิมพ์ | คำอธิบาย | ||||
---|---|---|---|---|---|---|
param (ที่จำเป็น) | เชือก | ชื่อของพารามิเตอร์ | ||||
label (ที่จำเป็น) | เชือก | คำอธิบายสั้น ๆ สำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อได้รับพร้อมท์ให้ใส่ค่าของพารามิเตอร์ | ||||
description (ไม่จำเป็น) | เชือก | คำอธิบายโดยละเอียดสำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อได้รับพร้อมท์ให้ใส่ค่าของพารามิเตอร์ รองรับมาร์กดาวน์ | ||||
type (ไม่จำเป็น) | เชือก | กลไกการป้อนข้อมูลสำหรับวิธีที่ผู้ใช้ตั้งค่าพารามิเตอร์ (เช่น ป้อนข้อความโดยตรงหรือเลือกจากรายการแบบเลื่อนลง) ค่าที่ถูกต้องมีดังต่อไปนี้:
หากละเว้นฟิลด์นี้ พารามิเตอร์จะมีค่าเริ่มต้นเป็น | ||||
options (จำเป็นหาก select type พารามิเตอร์หรือ multiSelect ) | รายการ | รายการค่าที่ผู้ใช้สามารถเลือกได้ รวมฟิลด์ป้าย
ต้องระบุฟิลด์ | ||||
resourceType (จำเป็นหาก type พารามิเตอร์เป็น selectResource ) | เชือก | ประเภทของทรัพยากร Firebase ที่จะแจ้งให้ผู้ใช้เลือก ปัจจุบันมีเพียงที่เก็บข้อมูล Cloud Storage เท่านั้นที่รองรับตัวเลือกทรัพยากร:
ค่า | ||||
example (ไม่จำเป็น) | เชือก | ค่าตัวอย่างสำหรับพารามิเตอร์ | ||||
validationRegex (ไม่จำเป็น) (ใช้ได้เฉพาะเมื่อ type พารามิเตอร์เป็น string ) | เชือก | สตริง Regex สำหรับการตรวจสอบความถูกต้องของค่าที่ผู้ใช้กำหนดค่าของพารามิเตอร์ Regex ถูกคอมไพล์โดยใช้ไลบรารี go: RE2 สำหรับรายละเอียดเกี่ยวกับการตรวจสอบ โปรดดู การตรวจสอบและข้อความแสดงข้อผิดพลาด ด้านล่าง | ||||
validationErrorMessage (ไม่จำเป็น) | เชือก | ข้อความแสดงข้อผิดพลาดที่จะแสดงหาก สำหรับรายละเอียดเกี่ยวกับการส่งข้อความแสดงข้อผิดพลาด โปรดดู การตรวจสอบและข้อความแสดงข้อผิดพลาด ด้านล่าง | ||||
default (ไม่จำเป็น) | เชือก | ค่าเริ่มต้นสำหรับพารามิเตอร์หากผู้ใช้ปล่อยค่าของพารามิเตอร์ให้ว่างไว้ หากมี คุณสามารถระบุค่า พารามิเตอร์ที่เติมอัตโนมัติ สำหรับค่า | ||||
required (ไม่จำเป็น) | บูลีน | กำหนดว่าผู้ใช้สามารถส่งสตริงว่างได้หรือไม่ เมื่อได้รับพร้อมท์ให้ใส่ค่าของพารามิเตอร์ หาก | ||||
immutable (ไม่จำเป็น) | บูลีน | กำหนดว่าผู้ใช้สามารถเปลี่ยนค่าของพารามิเตอร์หลังการติดตั้งได้หรือไม่ (เช่น หาก กำหนด ค่าส่วนขยายใหม่) หากละเว้น หมายเหตุ: หากคุณกำหนด พารามิเตอร์ "ตำแหน่ง" สำหรับฟังก์ชันที่ใช้งานของส่วนขยาย คุณควรรวมฟิลด์ |
การตรวจสอบความถูกต้องและการส่งข้อความแสดงข้อผิดพลาดสำหรับค่าที่ผู้ใช้กำหนด
เมื่อคุณตั้งค่าพารามิเตอร์ด้วย type
string
คุณจะต้องกำหนดการตรวจสอบความถูกต้องของ regex ที่เหมาะสมผ่านทางช่อง validationRegex
ของพารามิเตอร์
นอกจากนี้ สำหรับส่วนขยายจำนวนมาก ค่าพารามิเตอร์ที่ขอโดยทั่วไปคือเส้นทางฐานข้อมูลหรือที่เก็บข้อมูล Cloud Storage โปรดทราบว่าในระหว่างการติดตั้ง กำหนดค่าใหม่ หรืออัป เดต บริการส่วนขยายจะ ไม่ ตรวจสอบสิ่งต่อไปนี้ในขณะที่ ป้อน ค่าพารามิเตอร์ :
- มีการตั้งค่าฐานข้อมูลที่ระบุหรือที่เก็บข้อมูล Cloud Storage ภายในโปรเจ็กต์ Firebase ของผู้ใช้หรือไม่
- ไม่ว่าเส้นทางฐานข้อมูลที่ระบุจะมีอยู่ในฐานข้อมูลของผู้ใช้หรือไม่
อย่างไรก็ตาม เมื่อส่วนขยายปรับใช้ทรัพยากรจริง คอนโซล Firebase หรือ Firebase CLI จะแสดงข้อความแสดงข้อผิดพลาดหากยังไม่ได้ตั้งค่าฐานข้อมูลอ้างอิงหรือที่เก็บข้อมูล Cloud Storage ในโปรเจ็กต์
เราขอแนะนำอย่างยิ่งให้คุณแจ้งผู้ใช้ใน ไฟล์ PREINSTALL
เกี่ยวกับข้อกำหนดเหล่านี้ เพื่อที่เมื่อพวกเขาติดตั้งส่วนขยายของคุณ ก็จะติดตั้งได้สำเร็จและทำงานได้ตามที่คาดไว้
พารามิเตอร์ของระบบ
พารามิเตอร์ระบบจะควบคุมการกำหนดค่าพื้นฐานของทรัพยากรของส่วนขยาย เนื่องจากมีไว้เพื่อควบคุมการกำหนดค่าทรัพยากร จึงไม่สามารถเข้าถึงได้เป็นตัวแปรสภาพแวดล้อมจากภายในโค้ดฟังก์ชันของคุณ
โดยปกติคุณไม่จำเป็นต้องประกาศสิ่งใดสำหรับพารามิเตอร์เหล่านี้ใน extension.yaml
ส่วนขยายเหล่านี้จะถูกกำหนดโดยอัตโนมัติสำหรับอินสแตนซ์ส่วนขยายทุกรายการ และผู้ใช้มีโอกาสที่จะตั้งค่าที่กำหนดเองได้เมื่อติดตั้งส่วนขยายของคุณ
อย่างไรก็ตาม หากส่วนขยายของคุณมีข้อกำหนดทรัพยากรพิเศษ คุณสามารถตั้งค่าเฉพาะในระดับต่อทรัพยากรใน extension.yaml
ได้ การตั้งค่าการกำหนดค่าต่อทรัพยากรเหล่านี้จะแทนที่การตั้งค่าทั่วทั้งอินสแตนซ์ส่วนขยายของผู้ใช้ ตัวอย่างเช่น:
resources:
- name: high_memory_function
type: firebaseextensions.v1beta.function
description: >-
This function needs at least 1GB of memory!
properties:
httpsTrigger: {}
runtime: nodejs18
availableMemoryMb: 1024
- name: normal_function
type: firebaseextensions.v1beta.function
description: >-
This function has no special memory requirements. It will use the
default value, or the value of `firebaseextension.v1beta.function/memory`
properties:
httpsTrigger: {}
runtime: nodejs18
พารามิเตอร์ของระบบที่ใช้ได้คือ:
ชื่อ | ป้ายกำกับ (เป็นมิตรกับมนุษย์) | ฟิลด์ที่สอดคล้องกันใน properties | คำอธิบาย |
---|---|---|---|
firebaseextensions.v1beta.function/location | ที่ตั้ง | location | Cloud Functions ควรใช้งานในภูมิภาคใด |
firebaseextensions.v1beta.function/memory | ฟังก์ชั่นหน่วยความจำ | memory | แต่ละฟังก์ชันควรจัดสรรหน่วยความจำจำนวนเท่าใด |
firebaseextensions.v1beta.function/timeoutSeconds | หมดเวลาของฟังก์ชัน | timeout | ฟังก์ชันควรทำงานกี่วินาทีก่อนที่จะหมดเวลา |
firebaseextensions.v1beta.function/vpcConnectorEgressSettings | ทางออกของตัวเชื่อมต่อ VPC | vpcConnectorEgressSettings | ควบคุมการรับส่งข้อมูลขาออกเมื่อมีการกำหนดค่าตัวเชื่อมต่อ VPC |
firebaseextensions.v1beta.function/vpcConnector | ตัวเชื่อมต่อ VPC | vpcConnector | เชื่อมต่อฟังก์ชันคลาวด์กับตัวเชื่อมต่อ VPC ที่ระบุ |
firebaseextensions.v1beta.function/minInstances | อินสแตนซ์ฟังก์ชันขั้นต่ำ | minInstances | จำนวนอินสแตนซ์ขั้นต่ำของฟังก์ชันนี้ที่จะรันพร้อมกัน |
firebaseextensions.v1beta.function/maxInstances | อินสแตนซ์ของฟังก์ชันสูงสุด | maxInstances | จำนวนอินสแตนซ์สูงสุดของฟังก์ชันนี้ที่จะรันพร้อมกัน |
firebaseextensions.v1beta.function/ingressSettings | การตั้งค่าทางเข้า | ingressSettings | ควบคุมว่าการรับส่งข้อมูลขาเข้าจะได้รับการยอมรับจากที่ใด |
firebaseextensions.v1beta.function/labels | ป้ายกำกับ | labels | ป้ายกำกับสำหรับใช้กับทรัพยากรทั้งหมดในส่วนขยาย |