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

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

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

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

DATABASE_URL URL ของอินสแตนซ์ Realtime Database เริ่มต้น ของโปรเจ็กต์ 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

ชื่ออินสแตนซ์ Realtime Database เริ่มต้น ของโปรเจ็กต์ Firebase

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

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

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

STORAGE_BUCKET ชื่อ Bucket ของ Cloud Storage เริ่มต้น ของโปรเจ็กต์ Firebase

รูปแบบทั่วไป:
PROJECT_ID.firebasestorage.app

ค่าตัวอย่าง
project-123.firebasestorage.app

พารามิเตอร์ที่มีค่าเริ่มต้นจากการติดตั้งส่วนขยาย
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
(required)
สตริง ชื่อพารามิเตอร์
label
(required)
สตริง

คำอธิบายสั้นๆ สำหรับพารามิเตอร์

แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์

description
(optional)
สตริง

คำอธิบายโดยละเอียดสำหรับพารามิเตอร์

แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์

รองรับมาร์กดาวน์

type
(optional)
สตริง

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

ค่าที่ใช้ได้มีดังนี้

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

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

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

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

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

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

options
(required if parameter type is select or multiSelect)
list

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

รวมช่อง label และ value ไว้ในช่อง options

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

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

resourceType
(required if parameter type is selectResource)
สตริง

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

ประเภททรัพยากร รหัสประเภท
Cloud Storage บักเก็ต storage.googleapis.com/Bucket

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

example
(optional)
สตริง

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

validationRegex
(optional)
(only applicable when the parameter type is string)
สตริง

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

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

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

validationErrorMessage
(optional)
สตริง

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

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

default
(optional)
สตริง

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

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

required
(optional)
บูลีน

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

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

immutable
(optional)
บูลีน

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

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

หมายเหตุ: หากคุณกำหนดพารามิเตอร์ "location" สำหรับฟังก์ชันที่ทำให้ใช้งานได้ของส่วนขยาย คุณควรใส่ช่อง immutable นี้ในออบเจ็กต์พารามิเตอร์

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

เมื่อตั้งค่าพารามิเตอร์ที่มี 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 ป้ายกำกับที่จะใช้กับทรัพยากรทั้งหมดในส่วนขยาย