ตั้งค่าและใช้พารามิเตอร์ในส่วนขยายของคุณ

พารามิเตอร์เป็นกลไกที่ผู้ใช้ปรับแต่งแต่ละอินสแตนซ์ที่ติดตั้งของส่วนขยาย พารามิเตอร์เป็นเหมือนตัวแปรสภาพแวดล้อมสำหรับส่วนขยาย ค่าสำหรับพารามิเตอร์สามารถ เติมโดยอัตโนมัติ (ได้จาก 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 ที่ติดตั้งส่วนขยาย

รูปแบบทั่วไป:
project-id

ค่าตัวอย่าง:
project-123

DATABASE_URL URL อินสแตนซ์ฐานข้อมูลเรียลไทม์ เริ่มต้น ของโปรเจ็กต์ Firebase

รูปแบบทั่วไป:
https:// project-id -default-rtdb.firebaseio.com
(กรณีของสหรัฐอเมริกา)
หรือ
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(กรณีที่ไม่ใช่ของสหรัฐอเมริกา)

ค่าตัวอย่าง:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

ชื่ออินสแตนซ์ฐานข้อมูลเรียลไท ม์เริ่มต้น ของโปรเจ็กต์ Firebase

โดยปกติแล้ว ค่านี้จะเหมือนกับรหัสโปรเจ็กต์ หรือลงท้ายด้วย -default-rtdb

รูปแบบทั่วไป:
project-id

ค่าตัวอย่าง:
project-123

STORAGE_BUCKET ชื่อที่เก็บข้อมูล Cloud Storage เริ่มต้น ของโปรเจ็กต์ Firebase

รูปแบบทั่วไป:
project-id .appspot.com

ค่าตัวอย่าง:
project-123.appspot.com

พารามิเตอร์ที่มีค่าเริ่มต้นจากการติดตั้งส่วนขยาย
EXT_INSTANCE_ID

ตัวระบุเฉพาะสำหรับอินสแตนซ์ส่วนขยายที่ติดตั้ง

ค่านี้สร้างขึ้นจาก ฟิลด์ name ที่ระบุในไฟล์ extension.yaml

รูปแบบทั่วไปสำหรับอินสแตนซ์ที่ติดตั้งครั้งแรก (กำหนดโดยอัตโนมัติโดย Firebase ไม่สามารถ แก้ไขโดยผู้ใช้ระหว่างการติดตั้ง):
name-from-extension.yaml

ค่าตัวอย่าง:
my-awesome-extension


รูปแบบทั่วไปสำหรับอินสแตนซ์ที่ติดตั้งครั้งที่ 2 ขึ้นไป (กำหนดโดยอัตโนมัติโดย Firebase โดยผู้ใช้ สามารถ แก้ไขได้ระหว่างการติดตั้ง):
name-from-extension.yaml - 4-digit-alphanumeric-hash

ค่าตัวอย่าง:
my-awesome-extension-6m31

พารามิเตอร์ที่ผู้ใช้กำหนด

หากต้องการให้ผู้ใช้ปรับแต่งแต่ละอินสแตนซ์ที่ติดตั้งของส่วนขยาย คุณสามารถขอให้ผู้ใช้ระบุค่าพารามิเตอร์ระหว่างการติดตั้งได้ หากต้องการขอค่าเหล่านี้ คุณจะต้องตั้งค่าข้อความแจ้งในส่วน 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
(ไม่จำเป็น)
เชือก

กลไกการป้อนข้อมูลสำหรับวิธีที่ผู้ใช้ตั้งค่าพารามิเตอร์ (เช่น ป้อนข้อความโดยตรงหรือเลือกจากรายการแบบเลื่อนลง)

ค่าที่ถูกต้องมีดังต่อไปนี้:

  • string : อนุญาตให้ป้อนข้อความในรูปแบบอิสระ (ตามที่จำกัดโดย validationRegex ของคุณ)
  • select : อนุญาตให้เลือกหนึ่งรายการจากรายการตัวเลือกที่กำหนดไว้ล่วงหน้า หากคุณระบุค่านี้ คุณต้องกำหนดฟิลด์ options ด้วย
  • multiSelect : อนุญาตให้เลือกหนึ่งรายการขึ้นไปจากรายการตัวเลือกที่กำหนดไว้ล่วงหน้า หากคุณระบุค่านี้ คุณต้องกำหนดฟิลด์ options ด้วย
  • selectResource : อนุญาตให้เลือกประเภททรัพยากร Firebase เฉพาะ (เช่น ที่เก็บข้อมูล Cloud Storage) จากโปรเจ็กต์ของผู้ใช้

    เมื่อคุณระบุพารามิเตอร์ประเภทนี้ ผู้ใช้จะได้รับวิดเจ็ตการเลือกที่เป็นมิตรต่อผู้ใช้มากขึ้นใน UI การติดตั้ง ด้วยเหตุนี้ ให้ใช้พารามิเตอร์ selectResource ทุกครั้งที่เป็นไปได้

    หากคุณระบุค่านี้ คุณต้องกำหนดฟิลด์ resourceType ด้วย

  • secret : อนุญาตให้จัดเก็บสตริงที่ละเอียดอ่อน เช่น คีย์ API สำหรับบริการของบุคคลที่สาม ค่าเหล่านี้จะถูกจัดเก็บไว้ใน Cloud Secret Manager

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

หากละเว้นฟิลด์นี้ พารามิเตอร์จะมีค่าเริ่มต้นเป็น type string

options
(จำเป็นหาก select type พารามิเตอร์หรือ multiSelect )
รายการ

รายการค่าที่ผู้ใช้สามารถเลือกได้

รวมฟิลด์ป้าย label และ value ภายในฟิลด์ options :

  • label (string) : คำอธิบายสั้น ๆ ของตัวเลือกที่เลือกได้
  • value (string) : ค่าจริงของตัวเลือกที่เลือกได้

ต้องระบุฟิลด์ value สำหรับฟิลด์ options
หากละเว้น label ตัวเลือกรายการจะมีค่าเริ่มต้นที่จะแสดง value

resourceType
(จำเป็นหาก type พารามิเตอร์เป็น selectResource )
เชือก

ประเภทของทรัพยากร Firebase ที่จะแจ้งให้ผู้ใช้เลือก ปัจจุบันมีเพียงที่เก็บข้อมูล Cloud Storage เท่านั้นที่รองรับตัวเลือกทรัพยากร:

ประเภททรัพยากร พิมพ์รหัส
ที่เก็บข้อมูลบนคลาวด์ storage.googleapis.com/Bucket

ค่า resourceType ที่ไม่รู้จักจะถูกละเว้น และ UI จะแสดงพารามิเตอร์เป็นช่องป้อนข้อมูล string ที่มีรูปแบบอิสระ

example
(ไม่จำเป็น)
เชือก

ค่าตัวอย่างสำหรับพารามิเตอร์

validationRegex
(ไม่จำเป็น)
(ใช้ได้เฉพาะเมื่อ type พารามิเตอร์เป็น string )
เชือก

สตริง Regex สำหรับการตรวจสอบความถูกต้องของค่าที่ผู้ใช้กำหนดค่าของพารามิเตอร์

Regex ถูกคอมไพล์โดยใช้ไลบรารี go: RE2

สำหรับรายละเอียดเกี่ยวกับการตรวจสอบ โปรดดู การตรวจสอบและข้อความแสดงข้อผิดพลาด ด้านล่าง

validationErrorMessage
(ไม่จำเป็น)
เชือก

ข้อความแสดงข้อผิดพลาดที่จะแสดงหาก validationRegex ล้มเหลว

สำหรับรายละเอียดเกี่ยวกับการส่งข้อความแสดงข้อผิดพลาด โปรดดู การตรวจสอบและข้อความแสดงข้อผิดพลาด ด้านล่าง

default
(ไม่จำเป็น)
เชือก

ค่าเริ่มต้นสำหรับพารามิเตอร์หากผู้ใช้ปล่อยค่าของพารามิเตอร์ให้ว่างไว้

หากมี คุณสามารถระบุค่า พารามิเตอร์ที่เติมอัตโนมัติ สำหรับค่า default (ตัวอย่างเช่น โปรดดูพารามิเตอร์ IMG_BUCKET ของ ส่วนขยาย Resize Images )

required
(ไม่จำเป็น)
บูลีน

กำหนดว่าผู้ใช้สามารถส่งสตริงว่างได้หรือไม่ เมื่อได้รับพร้อมท์ให้ใส่ค่าของพารามิเตอร์

หาก required ค่านี้จะมีค่าเริ่มต้นเป็น true (นั่นคือ พารามิเตอร์ที่จำเป็น)

immutable
(ไม่จำเป็น)
บูลีน

กำหนดว่าผู้ใช้สามารถเปลี่ยนค่าของพารามิเตอร์หลังการติดตั้งได้หรือไม่ (เช่น หาก กำหนด ค่าส่วนขยายใหม่)

หากละเว้น immutable ค่านี้จะมีค่าเริ่มต้นเป็น false

หมายเหตุ: หากคุณกำหนด พารามิเตอร์ "ตำแหน่ง" สำหรับฟังก์ชันที่ใช้งานของส่วนขยาย คุณควรรวมฟิลด์ 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 ป้ายกำกับสำหรับใช้กับทรัพยากรทั้งหมดในส่วนขยาย