ก่อนที่จะเชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Functions โปรดตรวจสอบว่า คุณเข้าใจเวิร์กโฟลว์ Firebase Local Emulator Suite โดยรวม คุณติดตั้งและกำหนดค่าแล้ว Local Emulator Suite และตรวจสอบคำสั่ง CLI
เลือกโปรเจ็กต์ Firebase
Firebase Local Emulator Suite จะจำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase โปรเจ็กต์เดียว
หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ในการเรียกใช้ CLI ก่อนที่คุณจะเริ่มโปรแกรมจำลอง
firebase use
ในไดเรกทอรีที่ใช้งานอยู่ หรือคุณสามารถส่ง
ธง --project
ไปยังโปรแกรมจำลองแต่ละตัว
คำสั่ง
Local Emulator Suite รองรับการจำลองโปรเจ็กต์ Firebase จริงและ สาธิต
ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
---|---|---|
จริง |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (มีแนวโน้ม ผ่านคอนโซล Firebase) โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานอยู่ เช่น อินสแตนซ์ฐานข้อมูล และพื้นที่เก็บข้อมูล ที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับ Firebase นั้น |
เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจำลองสำหรับ หรือผลิตภัณฑ์ที่รองรับทั้งหมด สำหรับผลิตภัณฑ์ใดๆ ที่คุณไม่ได้จำลอง แอปและโค้ดจะ โต้ตอบกับทรัพยากรที่เผยแพร่อยู่ (อินสแตนซ์ฐานข้อมูล พื้นที่เก็บข้อมูล ที่เก็บข้อมูล ฟังก์ชัน เป็นต้น) |
เดโม |
โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริง และ ไม่มีแหล่งข้อมูลที่เผยแพร่อยู่ โดยปกติแล้วโครงการเหล่านี้จะเข้าถึงผ่าน Codelab หรือ บทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์สาธิตจะมี |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดจะโต้ตอบกับ โปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากร ที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะล้มเหลว |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อเป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้าง โปรเจ็กต์ Firebase
- ปลอดภัยขึ้น เนื่องจากโค้ดของคุณเรียกใช้แบบไม่มีการจำลองโดยไม่ได้ตั้งใจ (เวอร์ชันที่ใช้งานจริง) จะไม่มีการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- รองรับการใช้งานแบบออฟไลน์ได้ดีกว่า เนื่องจากไม่จำเป็นต้องเข้าอินเทอร์เน็ต ดาวน์โหลดการกำหนดค่า SDK
ใช้เครื่องดนตรีกับแอปเพื่อพูดคุยกับโปรแกรมจำลอง
ใช้เครื่องวัดการทำงานของแอปสำหรับฟังก์ชันที่เรียกใช้ได้
หากกิจกรรมต้นแบบและกิจกรรมทดสอบของคุณเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับโปรแกรมจำลอง Cloud Functions for Firebase ดังนี้
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useFunctionsEmulator(origin: "http://127.0.0.1:5001")
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
วัดเครื่องมือสำหรับแอปของคุณสำหรับการจำลองฟังก์ชัน HTTPS
ฟังก์ชัน HTTPS แต่ละฟังก์ชันในโค้ดของคุณจะแสดงจากโปรแกรมจำลองภายในโดยใช้รูปแบบ URL ต่อไปนี้
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
ตัวอย่างเช่น ฟังก์ชัน helloWorld
แบบง่ายที่มีพอร์ตและภูมิภาคของโฮสต์เริ่มต้นจะแสดงที่
https://localhost:5001/$PROJECT/us-central1/helloWorld
ใช้เครื่องวัดการทำงานของแอปสำหรับการจำลองฟังก์ชันคิวงาน
โปรแกรมจำลองจะตั้งค่าคิวงานจำลองโดยอัตโนมัติตามทริกเกอร์
และ Admin SDK จะเปลี่ยนเส้นทางคำขอที่จัดคิวไปยังโปรแกรมจำลองถ้า
ตรวจพบว่ากำลังทำงานผ่านสภาพแวดล้อม CLOUD_TASKS_EMULATOR_HOST
ตัวแปร
โปรดทราบว่าระบบการแจกจ่ายงานที่นำไปใช้งานจริงนั้นซับซ้อนกว่า อย่างใดอย่างหนึ่ง ในโปรแกรมจำลอง ดังนั้นคุณไม่ควรคาดหวังว่าจะมีการจำลอง เพื่อจำลองสภาพแวดล้อมเวอร์ชันที่ใช้งานจริงได้อย่างแม่นยำ พารามิเตอร์ภายในแท็ก โปรแกรมจำลองให้ขอบเขตสูงสุดของอัตราที่จะมีการมอบหมายงาน แล้วลองใหม่
วัดคุมแอปสำหรับการจำลองฟังก์ชันที่ทริกเกอร์ในเบื้องหลัง
โปรแกรมจำลอง Cloud Functions รองรับฟังก์ชันที่ทริกเกอร์เมื่ออยู่เบื้องหลังจากแหล่งที่มาต่อไปนี้
- โปรแกรมจำลอง Realtime Database
- โปรแกรมจำลอง Cloud Firestore
- โปรแกรมจำลอง Authentication
- โปรแกรมจำลอง Pub/Sub
- โปรแกรมจำลองการแจ้งเตือนของ Firebase
หากต้องการทริกเกอร์เหตุการณ์ในเบื้องหลัง ให้แก้ไขทรัพยากรแบ็กเอนด์โดยใช้ Emulator Suite UI หรือด้วยการเชื่อมต่อแอปหรือโค้ดทดสอบกับโปรแกรมจำลอง โดยใช้ SDK สำหรับแพลตฟอร์มของคุณ
เครื่องจัดการทดสอบสำหรับเหตุการณ์ที่กำหนดเองที่เกิดจากส่วนขยาย
สำหรับฟังก์ชันที่คุณใช้เพื่อจัดการกับเหตุการณ์ที่กำหนดเอง Firebase Extensions รายการ ด้วย Cloud Functions v2 โปรแกรมจำลอง Cloud Functions จะจับคู่กับ โปรแกรมจำลอง Eventarc ที่จะรองรับ ทริกเกอร์ Eventarc
หากต้องการทดสอบเครื่องจัดการเหตุการณ์ที่กำหนดเองสำหรับส่วนขยายที่แสดงเหตุการณ์ คุณต้องติดตั้ง โปรแกรมจำลอง Cloud Functions และ Eventarc
รันไทม์ของ Cloud Functions จะกำหนดสภาพแวดล้อม EVENTARC_EMULATOR
เป็น localhost:9299
ในกระบวนการปัจจุบันหากโปรแกรมจำลอง Eventarc
กำลังทำงาน Firebase Admin SDK เชื่อมต่อกับ Eventarc โดยอัตโนมัติ
โปรแกรมจำลองเมื่อมีการตั้งค่าตัวแปรสภาพแวดล้อม EVENTARC_EMULATOR
คุณสามารถ
แก้ไขพอร์ตเริ่มต้นตามที่อธิบายไว้ในส่วนกำหนดค่า Local Emulator Suite
เมื่อกำหนดค่าตัวแปรสภาพแวดล้อมอย่างถูกต้องแล้ว Firebase Admin SDK ส่งเหตุการณ์ไปยังโปรแกรมจำลอง Eventarc โดยอัตโนมัติ ในทางกลับกัน Eventarc โปรแกรมจำลองจะเรียกกลับไปยังโปรแกรมจำลอง Cloud Functions เพื่อทริกเกอร์ เครื่องจัดการที่ลงทะเบียน
คุณสามารถตรวจสอบบันทึกฟังก์ชันใน Emulator Suite UI เพื่อดูรายละเอียดเกี่ยวกับ ของตัวแฮนเดิล
กำหนดค่าสภาพแวดล้อมการทดสอบในเครื่อง
หากฟังก์ชันต้องใช้ Dotenv-based การกำหนดค่าสภาพแวดล้อม คุณจะจำลองลักษณะการทำงานดังกล่าวในสภาพแวดล้อมการทดสอบในเครื่องได้
เมื่อใช้โปรแกรมจำลอง Cloud Functions ในเครื่อง คุณจะลบล้างสภาพแวดล้อมได้
ตัวแปรสำหรับโปรเจ็กต์ของคุณด้วยการตั้งค่าไฟล์ .env.local
เนื้อหาของ
.env.local
จะมีความสำคัญเหนือ .env
และไฟล์ .env
เฉพาะโปรเจ็กต์
ตัวอย่างเช่น โปรเจ็กต์อาจรวม 3 ไฟล์นี้ที่มี ค่าที่แตกต่างกันสำหรับการพัฒนาและการทดสอบในเครื่อง
.env
|
.env.dev
|
.env.local
|
PLANET=โลก
AUDIENCE=มนุษย์ |
AUDIENCE=มนุษย์พัฒนา | AUDIENCE มนุษย์ท้องถิ่น |
โปรแกรมจำลองจะโหลดสภาพแวดล้อมเมื่อเริ่มต้นในบริบทเฉพาะเครื่อง ตัวแปรตามที่แสดง:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
ข้อมูลลับและข้อมูลเข้าสู่ระบบในโปรแกรมจำลอง Cloud Functions
โปรแกรมจำลอง Cloud Functions รองรับการใช้ข้อมูลลับเพื่อ จัดเก็บและเข้าถึงข้อมูลการกำหนดค่าที่ละเอียดอ่อน โดยค่าเริ่มต้น โปรแกรมจำลองจะพยายามเข้าถึงข้อมูลลับการผลิตของคุณโดยใช้ ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน โปรแกรมจำลองอาจเข้าถึงไม่ได้ในบางสถานการณ์ เช่น สภาพแวดล้อม CI ค่าข้อมูลลับเนื่องจากข้อจำกัดด้านสิทธิ์
เช่นเดียวกับการรองรับโปรแกรมจำลอง Cloud Functions สำหรับตัวแปรสภาพแวดล้อม คุณสามารถ
ลบล้างค่าข้อมูลลับด้วยการตั้งค่าไฟล์ .secret.local
จึงทำให้
ง่ายสำหรับคุณในการทดสอบฟังก์ชันภายในเครื่อง โดยเฉพาะในกรณีที่คุณไม่มีสิทธิ์เข้าถึง
ลงในค่าข้อมูลลับ
มีเครื่องมือใดสำหรับการทดสอบ Cloud Functions อีกบ้าง
โปรแกรมจำลอง Cloud Functions เสริมด้วยต้นแบบและการทดสอบอื่นๆ เครื่องมือ:
- เชลล์ Cloud Functions ซึ่งช่วยให้ใช้ฟังก์ชันซ้ำแบบอินเทอร์แอกทีฟ การสร้างต้นแบบและพัฒนา Shell ใช้โปรแกรมจำลอง Cloud Functions ที่มี อินเทอร์เฟซแบบ REPL สำหรับการพัฒนา ไม่มีการผสานรวมกับ มีการระบุโปรแกรมจำลอง Cloud Firestore หรือ Realtime Database เมื่อใช้เปลือกหอย จำลองข้อมูลและดำเนินการเรียกฟังก์ชันเพื่อจำลองการโต้ตอบกับผลิตภัณฑ์ที่ ปัจจุบัน Local Emulator Suite ไม่รองรับรายการต่อไปนี้ Analytics การกำหนดค่าระยะไกลและ Crashlytics
- Firebase Test SDK สำหรับ Cloud Functions ซึ่งเป็น Node.js ที่มีเฟรมเวิร์กมอคค่า สำหรับการพัฒนาฟังก์ชัน ผลที่ได้คือ Cloud Functions Test SDK จะมี การทำงานอัตโนมัติบนเชลล์ Cloud Functions
คุณดูข้อมูลเพิ่มเติมเกี่ยวกับ Shell ฟังก์ชันระบบคลาวด์และ Cloud Functions Test SDK ได้ ที่ฟังก์ชันทดสอบแบบอินเทอร์แอกทีฟ และ การทดสอบหน่วยของ Cloud Functions
ความแตกต่างระหว่างโปรแกรมจำลอง Cloud Functions กับเวอร์ชันที่ใช้งานจริง
โปรแกรมจำลอง Cloud Functions ค่อนข้างใกล้เคียงกับสภาพแวดล้อมที่ใช้งานจริง สำหรับกรณีการใช้งานส่วนใหญ่ เราได้ทำงานอย่างหนักเพื่อให้มั่นใจว่าทุกอย่าง ภายในรันไทม์ของโหนดนั้นใกล้เคียงกับเวอร์ชันที่ใช้งานจริงมากที่สุด อย่างไรก็ตาม โปรแกรมจำลองไม่ได้เลียนแบบสภาพแวดล้อมที่ใช้งานจริงที่สร้างโดยใช้คอนเทนเนอร์ ดังนั้นแม้ว่าโค้ดฟังก์ชันจะทำงานได้จริง แต่ส่วนอื่นๆ ของ สภาพแวดล้อม (เช่น ไฟล์ในเครื่อง ลักษณะการทำงานหลังจากฟังก์ชันขัดข้อง ฯลฯ) แตกต่างกัน
Cloud IAM
Firebase Emulator Suite จะไม่พยายามจำลองหรือทำตาม พฤติกรรมที่เกี่ยวกับ IAM สำหรับการวิ่ง โปรแกรมจำลองปฏิบัติตามการรักษาความปลอดภัยของ Firebase กฎที่มีให้ แต่ในสถานการณ์ที่มักจะใช้ IAM เช่น เพื่อตั้งค่า Cloud Functions ที่เรียกใช้บัญชีบริการ รวมถึงสิทธิ์ต่างๆ โปรแกรมจำลองไม่สามารถกำหนดค่าได้ และจะใช้บัญชีที่ใช้ได้ทั่วโลกใน เครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
ข้อจำกัดของหน่วยความจำและโปรเซสเซอร์
โปรแกรมจำลองจะไม่บังคับใช้ข้อจำกัดด้านหน่วยความจำหรือตัวประมวลผลสำหรับ
อย่างไรก็ตาม โปรแกรมจำลองรองรับฟังก์ชันการหมดเวลาผ่านทาง
อาร์กิวเมนต์รันไทม์ timeoutSeconds
โปรดทราบว่าเวลาในการดำเนินการกับฟังก์ชันอาจแตกต่างจากเวอร์ชันที่ใช้งานจริงเมื่อฟังก์ชันมีลักษณะดังนี้ เรียกใช้ในโปรแกรมจำลอง เราขอแนะนำว่าหลังจากที่คุณออกแบบและทดสอบ ด้วยโปรแกรมจำลอง คุณสามารถทำการทดสอบแบบจำกัดในเวอร์ชันที่ใช้งานจริงเพื่อยืนยัน เวลาดำเนินการ
การวางแผนสำหรับความแตกต่างในสภาพแวดล้อมในเครื่องและสภาพแวดล้อมการใช้งานจริง
เนื่องจากโปรแกรมจำลองจะทำงานบนเครื่องภายในของคุณ โปรแกรมดังกล่าวจึงขึ้นอยู่กับเครื่องของคุณ สำหรับแอปพลิเคชัน ตลอดจนโปรแกรมและยูทิลิตีภายในระบบ
โปรดทราบว่าสภาพแวดล้อมในเครื่องสำหรับการพัฒนา Cloud Functions อาจ แตกต่างจากสภาพแวดล้อมเวอร์ชันที่ใช้งานจริงของ Google ดังนี้
แอปพลิเคชันที่คุณติดตั้งในเครื่องเพื่อจำลองสภาพแวดล้อมที่ใช้งานจริง (เช่น ImageMagick จากบทแนะนำนี้) ลักษณะการทำงานอาจแตกต่างจากเวอร์ชันที่ใช้งานจริง โดยเฉพาะหากต้องการ หรือพัฒนาในสภาพแวดล้อมที่ไม่ใช่ Linux พิจารณาการปรับใช้ สำเนาไบนารีของโปรแกรมที่ขาดหายไปควบคู่กับการทำให้ฟังก์ชันใช้งานได้
ในทำนองเดียวกัน ยูทิลิตีในตัว (เช่น คำสั่ง Shell อย่าง
ls
,mkdir
) อาจ แตกต่างจากเวอร์ชันที่พร้อมใช้งานในเวอร์ชันที่ใช้งานจริง โดยเฉพาะอย่างยิ่งหากคุณกําลังพัฒนาใน สภาพแวดล้อมที่ไม่ใช่ Linux (เช่น macOS) คุณจัดการปัญหานี้ได้โดยใช้ ทางเลือกเฉพาะโหนดแทนคำสั่งแบบเนทีฟ หรือโดยการสร้างไบนารีของ Linux เพื่อ มาพร้อมกับการติดตั้งใช้งาน
กำลังลองอีกครั้ง
โปรแกรมจำลอง Cloud Functions ไม่รองรับการพยายามลองใช้ฟังก์ชันอีกครั้งเมื่อล้มเหลว
ฉันควรทำอย่างไรต่อไป
- หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกอบรมของ Firebase Emulators
- ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ได้ที่เรียกใช้ฟังก์ชันในเครื่อง