พารามิเตอร์เป็นกลไกที่ผู้ใช้ใช้ปรับแต่งอินสแตนซ์ที่ติดตั้งแต่ละรายการของส่วนขยาย พารามิเตอร์จะคล้ายกับตัวแปรสภาพแวดล้อมของส่วนขยาย ค่าของพารามิเตอร์อาจป้อนข้อมูลโดยอัตโนมัติ (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 (เช่น Bucket ของ Storage เริ่มต้น) หรือเป็นค่าที่เฉพาะเจาะจงกับส่วนขยาย (เช่น รหัสอินสแตนซ์ของส่วนขยาย)
ค่าพารามิเตอร์ที่ป้อนข้อมูลโดยอัตโนมัติทั้งหมดจะเปลี่ยนแปลงไม่ได้ ระบบจะตั้งค่าเมื่อสร้างโปรเจ็กต์หรือติดตั้งส่วนขยาย
แม้ว่า Firebase จะป้อนข้อมูลค่าพารามิเตอร์เหล่านี้ให้กับส่วนขยายโดยอัตโนมัติ
Firebase จะไม่จัดเตรียมผลิตภัณฑ์ที่เชื่อมโยงให้กับผู้ใช้โดยอัตโนมัติระหว่าง
การติดตั้ง ผู้ใช้ที่ติดตั้งส่วนขยายต้องเปิดใช้ผลิตภัณฑ์ที่เชื่อมโยงและเกี่ยวข้องในโปรเจ็กต์ของตนก่อนการติดตั้ง เช่น หาก
ส่วนขยายของคุณเกี่ยวข้องกับ Cloud Firestore ผู้ใช้ต้อง
ตั้งค่า Cloud Firestore ใน
โปรเจ็กต์ของตน เราขอแนะนำให้แจ้งให้ผู้ใช้ทราบเกี่ยวกับข้อกำหนดเหล่านี้ใน
ไฟล์ PREINSTALL.md
| ข้อมูลอ้างอิงสำหรับพารามิเตอร์ที่ป้อนข้อมูลโดยอัตโนมัติ | คำอธิบาย | ค่าพารามิเตอร์ (Firebase เป็นผู้ระบุ) |
|---|---|---|
| พารามิเตอร์ที่มีค่าเริ่มต้นจากโปรเจ็กต์ Firebase | ||
PROJECT_ID |
ตัวระบุที่ไม่ซ้ำกันสำหรับโปรเจ็กต์ Firebase ที่ติดตั้งส่วนขยาย |
รูปแบบทั่วไป
ค่าตัวอย่าง |
DATABASE_URL |
URL ของอินสแตนซ์ Realtime Database เริ่มต้น ของโปรเจ็กต์ Firebase |
รูปแบบทั่วไป
ค่าตัวอย่าง |
DATABASE_INSTANCE |
ชื่ออินสแตนซ์ Realtime Database เริ่มต้น ของโปรเจ็กต์ Firebase โดยปกติแล้ว ค่านี้จะเหมือนกับรหัสโปรเจ็กต์หรือลงท้ายด้วย
|
รูปแบบทั่วไป
ค่าตัวอย่าง |
STORAGE_BUCKET |
ชื่อ 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(required) |
สตริง | ชื่อพารามิเตอร์ | ||||
label(required) |
สตริง |
คำอธิบายสั้นๆ สำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ |
||||
description(optional) |
สตริง |
คำอธิบายโดยละเอียดสำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ รองรับมาร์กดาวน์ | ||||
type(optional) |
สตริง |
กลไกการป้อนข้อมูลสำหรับวิธีที่ผู้ใช้ตั้งค่าพารามิเตอร์ (สำหรับ ตัวอย่าง ป้อนข้อความโดยตรงหรือเลือกจากรายการแบบเลื่อนลง) ค่าที่ใช้ได้มีดังนี้
หากละเว้นช่องนี้ พารามิเตอร์จะมีค่าเริ่มต้นเป็น |
||||
options(required if parameter type
is select or multiSelect)
|
list |
รายการค่าที่ผู้ใช้เลือกได้ รวมช่อง
ช่อง |
||||
resourceType(required if parameter type
is selectResource)
|
สตริง |
ประเภททรัพยากร Firebase ที่จะแจ้งให้ผู้ใช้เลือก ปัจจุบันมีเพียง Cloud Storage Bucket เท่านั้นที่รองรับตัวเลือกทรัพยากร
ระบบจะละเว้นค่า |
||||
example(optional) |
สตริง |
ค่าตัวอย่างสำหรับพารามิเตอร์ |
||||
validationRegex(optional) (only applicable when the parameter type is
string)
|
สตริง |
สตริง Regex สำหรับการตรวจสอบค่าที่ผู้ใช้กำหนดค่าของพารามิเตอร์ ระบบจะคอมไพล์ Regex โดยใช้ไลบรารี go: RE2 โปรดดูรายละเอียดเกี่ยวกับการตรวจสอบได้ที่ การตรวจสอบและการแสดงข้อความแสดงข้อผิดพลาดด้านล่าง |
||||
validationErrorMessage(optional) |
สตริง |
ข้อความแสดงข้อผิดพลาดที่จะแสดงหาก
โปรดดูรายละเอียดเกี่ยวกับการแสดงข้อความแสดงข้อผิดพลาดได้ที่ การตรวจสอบและการแสดงข้อความแสดงข้อผิดพลาดด้านล่าง |
||||
default(optional) |
สตริง |
ค่าเริ่มต้นสำหรับพารามิเตอร์หากผู้ใช้เว้นค่าของพารามิเตอร์ ว่างไว้ คุณสามารถระบุค่าพารามิเตอร์ที่ป้อนข้อมูลโดยอัตโนมัติสำหรับค่า |
||||
required(optional) |
บูลีน |
กำหนดว่าผู้ใช้จะส่งสตริงว่างได้หรือไม่เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ หากละเว้น |
||||
immutable(optional) |
บูลีน |
กำหนดว่าผู้ใช้จะเปลี่ยนค่าของพารามิเตอร์ได้หรือไม่หลังจาก ติดตั้ง (เช่น หากผู้ใช้ กำหนดค่า ส่วนขยายใหม่) หากละเว้น
หมายเหตุ: หากคุณกำหนดพารามิเตอร์ "location" สำหรับฟังก์ชันที่ทำให้ใช้งานได้ของส่วนขยาย คุณควรใส่ช่อง |
การตรวจสอบและการแสดงข้อความแสดงข้อผิดพลาดสำหรับค่าที่ผู้ใช้กำหนดค่า
เมื่อตั้งค่าพารามิเตอร์ที่มี type เป็น string คุณต้องกำหนด
การตรวจสอบ Regex ที่เหมาะสมผ่านช่อง
validationRegex ของพารามิเตอร์
นอกจากนี้ สำหรับส่วนขยายหลายรายการ ค่าพารามิเตอร์ที่ผู้ใช้ขอมากที่สุดคือเส้นทางฐานข้อมูล หรือ Cloud Storage Bucket โปรดทราบว่าระหว่างการติดตั้ง การกำหนดค่าใหม่ หรือ การอัปเดต Extensionsบริการจะ ไม่ ตรวจสอบสิ่งต่อไปนี้ใน ขณะที่ ป้อน ค่าพารามิเตอร์:
- มีการตั้งค่าฐานข้อมูลหรือ Cloud Storage Bucket ที่ระบุไว้ใน โปรเจ็กต์ Firebase ของผู้ใช้หรือไม่
- เส้นทางฐานข้อมูลที่ระบุมีอยู่ในฐานข้อมูลของผู้ใช้หรือไม่
อย่างไรก็ตาม เมื่อส่วนขยายทำให้ทรัพยากรใช้งานได้จริง คอนโซล Firebase หรือ Firebase CLI จะแสดงข้อความแสดงข้อผิดพลาดหาก ยังไม่ได้ตั้งค่าฐานข้อมูลหรือ Bucket ของ 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 |
เชื่อมต่อ Cloud Functions กับเครื่องมือเชื่อมต่อ VPC ที่ระบุ |
| firebaseextensions.v1beta.function/minInstances | อินสแตนซ์ของฟังก์ชันขั้นต่ำ | minInstances |
จำนวนอินสแตนซ์ขั้นต่ำของฟังก์ชันนี้ที่จะทำงานพร้อมกัน |
| firebaseextensions.v1beta.function/maxInstances | อินสแตนซ์ของฟังก์ชันสูงสุด | maxInstances |
จำนวนอินสแตนซ์สูงสุดของฟังก์ชันนี้ที่จะทำงานพร้อมกัน |
| firebaseextensions.v1beta.function/ingressSettings | การตั้งค่าข้อมูลขาเข้า | ingressSettings |
ควบคุมตำแหน่งที่จะยอมรับการรับส่งข้อมูลขาเข้า |
| firebaseextensions.v1beta.function/labels | ป้ายกำกับ | labels |
ป้ายกำกับที่จะใช้กับทรัพยากรทั้งหมดในส่วนขยาย |