คุณสามารถทดสอบแอปในเครื่องก่อนApp Hostingการทำให้ใช้งานได้ โดยใช้App Hostingโปรแกรมจำลองซึ่งเป็นส่วนหนึ่งของ Firebase Local Emulator Suite
ก่อนใช้โปรแกรมจำลอง App Hosting โปรดตรวจสอบว่าคุณเข้าใจLocal Emulator Suite เวิร์กโฟลว์โดยรวมของ Firebase และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคำสั่ง CLI
หัวข้อนี้ถือว่าคุณคุ้นเคยกับ App Hosting อยู่แล้ว หากจำเป็น โปรดอ่านApp Hostingบทนำและเอกสารอื่นๆ เพื่อช่วยให้คุณเข้าใจวิธีการทำงานของ App Hosting
ฉันใช้App Hostingอีมูเลเตอร์ทำอะไรได้บ้าง
App Hostingโปรแกรมจำลองช่วยให้คุณทดสอบและปรับแต่งเว็บแอปพลิเคชัน ในเครื่องได้ ซึ่งจะช่วยเพิ่มประสิทธิภาพกระบวนการพัฒนาและปรับปรุงคุณภาพ ของเว็บแอปที่สร้างโดยใช้ Firebase และทําให้ใช้งานได้ใน App Hosting
โปรแกรมจำลอง App Hosting
- ช่วยให้คุณเรียกใช้เว็บแอปในเครื่องได้โดยมีตัวแปรสภาพแวดล้อมและข้อมูลลับ
ที่กำหนดไว้ในไฟล์การกำหนดค่า
apphosting.yaml
- สามารถลบล้างตัวแปรสภาพแวดล้อมและข้อมูลลับเพื่อใช้ในโปรแกรมจำลองด้วยไฟล์
apphosting.emulator.yaml
- ใช้ร่วมกับโปรแกรมจำลอง Firebase อื่นๆ ได้ หากคุณใช้ Firestore, Auth หรือโปรแกรมจำลองอื่นๆ Local Emulator Suite จะช่วยให้มั่นใจได้ว่าโปรแกรมจำลองเหล่านี้จะเริ่มทำงานก่อนโปรแกรมจำลอง App Hosting
กำหนดค่าโปรแกรมจำลอง
หากต้องการเริ่มต้นใช้งาน ให้ติดตั้งและเริ่มต้น Local Emulator Suite ตามที่อธิบายไว้
ในติดตั้ง กำหนดค่า และผสานรวม Local Emulator
Suite นอกจาก
โปรแกรมจำลอง Firebase อื่นๆ ที่ต้องการตั้งค่าแล้ว ให้เลือก App Hosting
Emulator
ด้วย CLI จะแจ้งให้คุณป้อนค่าของโปรแกรมจำลอง App Hosting บางค่า
ซึ่งรวมถึง
- ไดเรกทอรีรากของแอปที่สัมพันธ์กับโปรเจ็กต์ ซึ่งเป็นสิ่งสำคัญหากคุณใช้ที่เก็บข้อมูลเดียวที่มีApp Hosting
- ไม่ว่าคุณจะต้องการลบล้างค่าใดๆ สำหรับการพัฒนาในเครื่องหรือไม่
- ไม่ว่าคุณจะต้องการให้สิทธิ์เข้าถึงข้อมูลลับแก่เพื่อนร่วมทีมสำหรับการพัฒนาในเครื่องหรือไม่
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
◯ Firestore Emulator
◯ Database Emulator
◯ Hosting Emulator
◯ Pub/Sub Emulator
◯ Storage Emulator
◯ Eventarc Emulator
(Move up and down to reveal more choices)
? Specify your app's root directory relative to your project (./)
? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)
? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
◯ API_KEY
? What new value would you like for plaintext MEMCACHE_ADDR?
? What would you like to name the secret reference for API_KEY? (test-api-key)
? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]
? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:
✔ Successfully set IAM bindings on secret test-api-key.
ระบบจะใช้ค่าที่คุณระบุในขั้นตอนการตั้งค่านี้เพื่ออัปเดต
App Hostingการกำหนดค่าโปรแกรมจำลองใน firebase.json
นอกจากนี้ คุณยังกำหนดค่าโปรแกรมจำลอง App Hosting ได้โดยการอัปเดต firebase.json
โดยตรง
สคีมาสำหรับโปรแกรมจำลองการโฮสต์แอปมีดังนี้
{
...
"emulators": {
"apphosting": {
"startCommand": <command> [optional]
"rootDirectory": <path> [optional]
}
}
}
- ระบบจะสร้างและตั้งค่า
startCommand
โดยอัตโนมัติเมื่อเริ่มต้นอีมูเลเตอร์ หากไม่ได้ระบุไว้ โปรแกรมจำลองจะตรวจหาและเรียกใช้คำสั่งสำหรับนักพัฒนาซอฟต์แวร์ของ เครื่องมือจัดการแพ็กเกจ rootDirectory
ใช้เพื่อรองรับการตั้งค่าโปรเจ็กต์ Monorepo หากเว็บแอปอยู่ในไดเรกทอรีย่อย คุณต้องระบุเส้นทางของไดเรกทอรีนั้น เทียบกับรูท (ตำแหน่งของfirebase.json
)
จัดการการจำลอง
การเริ่มต้นโปรแกรมจำลองจะสร้างไฟล์ apphosting.emulator.yaml
ใน
ไดเรกทอรีรากของแอป ไฟล์การกำหนดค่านี้มีสคีมาเดียวกับไฟล์
apphosting.yaml
ที่ใช้ใน
การผลิต แต่มีไว้สำหรับการพัฒนาในเครื่องโดยเฉพาะ โดยค่าเริ่มต้น โปรแกรมจำลองจะอ่านการกำหนดค่าจากไฟล์ apphosting.yaml
แต่หากมีไฟล์ apphosting.emulator.yaml
ระบบจะจัดลำดับความสำคัญและให้สิทธิ์การกำหนดค่าในไฟล์นั้น
apphosting.emulator.yaml
ไฟล์ออกแบบมาให้ปลอดภัยต่อการคอมมิตและแชร์
กับเพื่อนร่วมงาน ตัวแปรสภาพแวดล้อมที่เป็นความลับใน
apphosting.yaml
ต้องเป็นความลับใน apphosting.emulator.yaml
ด้วย เพื่อช่วยให้มั่นใจว่าคุณจะไม่ส่งข้อมูลที่ละเอียดอ่อนไปยัง
ที่เก็บแหล่งที่มาโดยไม่ได้ตั้งใจ หากไม่จำเป็นต้องเปลี่ยนข้อมูลลับระหว่างการใช้งานจริงกับการพัฒนาในเครื่อง (เช่น คีย์ Gemini API) คุณก็ไม่จำเป็นต้องเพิ่มข้อมูลลับลงใน apphosting.emulator.yaml
;
แต่ให้สิทธิ์เข้าถึงข้อมูลลับแก่ทีมแทน
หากแอปพลิเคชันใช้ข้อมูลลับจำนวนมาก (เช่น คีย์ API สำหรับบริการ 3 รายการที่แตกต่างกัน โดยมีค่าที่แตกต่างกันสำหรับแต่ละรายการของการใช้งานจริง การจัดเตรียม และการพัฒนาในเครื่อง) คุณอาจใช้เกินระดับฟรีของ Cloud Secret Manager และต้องจ่าย $0.06 ต่อข้อมูลลับเพิ่มเติม 1 รายการต่อเดือน หากต้องการจัดการการกำหนดค่าในเครื่อง
ภายนอกการควบคุมแหล่งที่มาเพื่อหลีกเลี่ยงค่าธรรมเนียมนี้ คุณสามารถใช้ไฟล์ apphosting.local.yaml
รุ่นเดิมได้ ต่างจาก apphosting.emulator.yaml
ไฟล์นี้ได้รับอนุญาตให้ระบุค่าข้อความธรรมดาสำหรับตัวแปรสภาพแวดล้อมที่เป็นค่าลับใน apphosting.yaml
ให้สิทธิ์เข้าถึงข้อมูลลับแก่ผู้ใช้หรือกลุ่ม
ระบบจะอ่านข้อมูลลับที่จัดเก็บไว้ใน apphosting.emulator.yaml
เมื่อโปรแกรมจำลองเริ่มทำงาน
ซึ่งหมายความว่าทีมพัฒนาของคุณต้องมีสิทธิ์เข้าถึงข้อมูลลับ คุณสามารถ
ใช้คำสั่ง apphosting:secrets:grantaccess
เพื่อให้สิทธิ์เข้าถึงข้อมูลลับแก่
ผู้ใช้หรือกลุ่มทางอีเมล
firebase apphosting:secrets:grantaccess test-api-key --emails my-team@my-company.com
หากเป็นไปได้ ให้พิจารณาใช้คีย์ทดสอบเท่านั้นในapphosting.emulator.yaml
ที่ไม่มีสิทธิ์เข้าถึงข้อมูลการนำไปใช้งานจริง ไม่มีผลข้างเคียงทั่วโลก
(ส่งอีเมล เรียกเก็บเงินจากบัตรเครดิต) และ/หรือมีโควต้าต่ำกว่า ซึ่งจะช่วย
ให้มั่นใจว่าโค้ดที่ยังไม่ได้ตรวจสอบจะส่งผลกระทบในโลกจริงน้อยลง
โปรดพิจารณาใช้ Google Groups เพื่อจัดการการเข้าถึงข้อมูลลับแทนการให้สิทธิ์เข้าถึงแก่ผู้ใช้แต่ละราย ซึ่งจะช่วยให้การเริ่มต้นใช้งานสำหรับสมาชิกใหม่ในทีมพัฒนาแอปเป็นเรื่องง่าย เนื่องจากเมื่อเพิ่มสมาชิกใหม่ลงในกลุ่ม สมาชิกดังกล่าวจะมีสิทธิ์เข้าถึงข้อมูลลับทั้งหมดที่จำเป็น คุณอาจมีกลุ่มที่เหมาะสมอยู่แล้วซึ่งนักพัฒนาแอปใช้สื่อสารกัน
การควบคุมการเข้าถึงด้วย Google Groups ยังช่วยให้มั่นใจได้ว่านักพัฒนาซอฟต์แวร์ที่ออกจากทีมจะเสียสิทธิ์เข้าถึงข้อมูลลับทั้งหมดเมื่อถูกนำออกจากกลุ่มอีเมล หากข้อมูลลับมีสิทธิ์เข้าถึงข้อมูลการผลิต
หรือผลข้างเคียงในโลกแห่งความเป็นจริง คุณอาจยังคงต้องหมุนเวียนคีย์และ
กำหนดค่าใหม่ด้วย firebase apphosting:secrets:set
เรียกใช้โปรแกรมจำลอง
firebase emulators:start
ซึ่งจะเริ่มโปรแกรมจำลองทั้งหมดที่กำหนดไว้ในไฟล์ firebase.json
รวมถึง
โปรแกรมจำลอง App Hosting