เชื่อมต่อแอพของคุณกับ Cloud Storage Emulator

ก่อนเชื่อมต่อแอปของคุณกับโปรแกรมจำลอง Cloud Storage ตรวจสอบให้แน่ใจว่าคุณ เข้าใจเวิร์กโฟลว์ 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 จริง และไม่มีทรัพยากรจริง โครงการเหล่านี้มักจะเข้าถึงได้ผ่าน codelabs หรือบทช่วยสอนอื่นๆ

รหัสโครงการสำหรับโครงการสาธิตมี demo- หน้าการสาธิต

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

เราขอแนะนำให้คุณใช้โปรเจ็กต์สาธิตในทุกที่ที่ทำได้ ประโยชน์รวมถึง:

  • ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase เลย
  • ความปลอดภัยที่เข้มงวดยิ่งขึ้น เนื่องจากหากรหัสของคุณเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (การผลิต) โดยไม่ได้ตั้งใจ จะไม่มีโอกาสเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
  • การสนับสนุนออฟไลน์ที่ดีขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK ของคุณ

เครื่องมือแอปของคุณเพื่อพูดคุยกับอีมูเลเตอร์

Android, แพลตฟอร์ม Apple และ Web SDK

ตั้งค่าการกำหนดค่าในแอปหรือคลาสทดสอบเพื่อโต้ตอบกับโปรแกรมจำลอง Cloud Storage ดังนี้

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Swift
Storage.storage().useEmulator(withHost:"localhost", port:9199)
เว็บ v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
เว็บ v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

ไม่จำเป็นต้องตั้งค่าเพิ่มเติมเพื่อทดสอบฟังก์ชัน Cloud ที่ท ริกเกอร์โดยเหตุการณ์ Cloud Storage โดยใช้โปรแกรมจำลอง เมื่อทั้ง Cloud Storage และ Cloud Function emulators ทำงานอยู่ ทั้งคู่จะทำงานร่วมกันโดยอัตโนมัติ

Admin SDKs

Firebase Admin SDK เชื่อมต่อกับโปรแกรมจำลอง Cloud Storage โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_STORAGE_EMULATOR_HOST :

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

โปรดทราบว่าโปรแกรมจำลอง Cloud Functions จะรับรู้ถึงโปรแกรมจำลอง Cloud Storage โดยอัตโนมัติ คุณจึงข้ามขั้นตอนนี้ได้เมื่อทดสอบการผสานการทำงานระหว่าง Cloud Functions และโปรแกรมจำลอง Cloud Storage ตัวแปรสภาพแวดล้อมจะได้รับการตั้งค่าโดยอัตโนมัติสำหรับ Admin SDK ใน Cloud Storage

หากคุณต้องการให้โค้ด Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่ใช้ร่วมกันที่ทำงานในสภาพแวดล้อมอื่น คุณจะต้องระบุ รหัสโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าโดยใช้ Firebase CLI คุณสามารถส่งรหัสโปรเจ็กต์เพื่อ initializeApp แอปโดยตรงหรือตั้งค่าตัวแปรสภาพแวดล้อม GCLOUD_PROJECT

Node.js ผู้ดูแลระบบ SDK
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"

นำเข้าและส่งออกข้อมูล

ฐานข้อมูลและโปรแกรมจำลอง Cloud Storage ช่วยให้คุณสามารถส่งออกข้อมูลจากอินสแตนซ์ของโปรแกรมจำลองที่ทำงานอยู่ กำหนดชุดข้อมูลพื้นฐานเพื่อใช้ในการทดสอบหน่วยหรือเวิร์กโฟลว์การรวมอย่างต่อเนื่อง จากนั้นส่งออกเพื่อแชร์ระหว่างทีม

firebase emulators:export ./dir

ในการทดสอบ เมื่อเริ่มต้นโปรแกรมจำลอง ให้นำเข้าข้อมูลพื้นฐาน

firebase emulators:start --import=./dir

คุณสามารถสั่งให้อีมูเลเตอร์เอ็กซ์พอร์ตข้อมูลเมื่อปิดระบบ ไม่ว่าจะระบุพาธเอ็กซ์พอร์ตหรือเพียงแค่ใช้พาธที่ส่งผ่านไปยังแฟ --import

firebase emulators:start --import=./dir --export-on-exit

ตัวเลือกการนำเข้าและส่งออกข้อมูลเหล่านี้ใช้ได้กับคำสั่ง firebase emulators:exec เช่นกัน สำหรับข้อมูลเพิ่มเติม โปรดดูการ อ้างอิงคำสั่งอีมู เลเตอร์

Cloud Storage emulator แตกต่างจากการผลิตอย่างไร

สำหรับการทดสอบแอปไคลเอ็นต์ โปรแกรมจำลอง Cloud Storage จะปรับให้เข้ากับการผลิตได้เกือบสมบูรณ์แบบโดยคำนึงถึงพื้นที่ผิวของ Firebase API คำสั่ง Firebase ทั้งหมดคาดว่าจะทำงานระหว่าง Firebase SDK ปกติ (แพลตฟอร์มเว็บ, Android และ Apple)

สำหรับการทดสอบแอปฝั่งเซิร์ฟเวอร์ มีข้อจำกัด Firebase Admin SDK ใช้พื้นผิว Google Cloud API และไม่มีการจำลองปลายทางทั้งหมดของ API นี้ ตามหลักการทั่วไปแล้ว ทุกสิ่งที่สามารถทำได้จาก SDK ของไคลเอ็นต์ (การอัปโหลดหรือการลบไฟล์ การรับและการตั้งค่าข้อมูลเมตา) ก็จะถูกนำไปใช้งานจาก Admin SDK ด้วยเช่นกัน แต่สิ่งอื่นๆ นอกเหนือจากนั้นไม่ใช่ การยกเว้นที่โดดเด่นมีการระบุไว้ด้านล่าง

คลาวด์ IAM

Firebase Emulator Suite จะไม่พยายามทำซ้ำหรือเคารพพฤติกรรมที่เกี่ยวข้องกับ IAM สำหรับการรัน โปรแกรมจำลองปฏิบัติตามกฎความปลอดภัยของ Firebase ที่มีให้ แต่ในสถานการณ์ที่ปกติแล้ว IAM จะถูกใช้ ตัวอย่างเช่น การตั้งค่า Cloud Functions ที่เรียกใช้บัญชีบริการและการอนุญาต โปรแกรมจำลองจะไม่สามารถกำหนดค่าได้และจะใช้บัญชีที่พร้อมใช้งานทั่วโลกบนเครื่องของนักพัฒนาซอฟต์แวร์ของคุณ คล้ายกับการรันสคริปต์ในเครื่องโดยตรง

การแจ้งเตือนผับ/ย่อย

โปรแกรมจำลอง Cloud Storage ไม่ได้ผสานรวมกับโปรแกรมจำลอง Cloud Pub/Sub ดังนั้นจึงไม่รองรับการสร้างช่องทาง/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์ที่เก็บข้อมูล เราขอแนะนำให้ใช้ทริกเกอร์ Cloud Functions Storage โดยตรง

ข้อมูลเมตาระดับที่เก็บข้อมูล

โปรแกรมจำลอง Cloud Storage ไม่รองรับการกำหนดค่าระดับบัคเก็ตใดๆ รวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับบัคเก็ต ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้เมื่อเวลาผ่านไป

อะไรต่อไป?

  • สำหรับชุดวิดีโอที่ได้รับการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตาม เพลย์ลิสต์การฝึกอบรม Firebase Emulators
  • เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมกับ Cloud Storage ทั่วไป โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ Cloud Functions for Firebase emulator ที่ ฟังก์ชัน Run ใน เครื่อง
,

ก่อนเชื่อมต่อแอปของคุณกับโปรแกรมจำลอง Cloud Storage ตรวจสอบให้แน่ใจว่าคุณ เข้าใจเวิร์กโฟลว์ 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 จริง และไม่มีทรัพยากรจริง โครงการเหล่านี้มักจะเข้าถึงได้ผ่าน codelabs หรือบทช่วยสอนอื่นๆ

รหัสโครงการสำหรับโครงการสาธิตมี demo- หน้าการสาธิต

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

เราขอแนะนำให้คุณใช้โปรเจ็กต์สาธิตในทุกที่ที่ทำได้ ประโยชน์รวมถึง:

  • ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase เลย
  • ความปลอดภัยที่เข้มงวดยิ่งขึ้น เนื่องจากหากรหัสของคุณเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (การผลิต) โดยไม่ได้ตั้งใจ จะไม่มีโอกาสเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
  • การสนับสนุนออฟไลน์ที่ดีขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK ของคุณ

เครื่องมือแอปของคุณเพื่อพูดคุยกับอีมูเลเตอร์

Android, แพลตฟอร์ม Apple และ Web SDK

ตั้งค่าการกำหนดค่าในแอปหรือคลาสทดสอบเพื่อโต้ตอบกับโปรแกรมจำลอง Cloud Storage ดังนี้

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Swift
Storage.storage().useEmulator(withHost:"localhost", port:9199)
เว็บ v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
เว็บ v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

ไม่จำเป็นต้องตั้งค่าเพิ่มเติมเพื่อทดสอบฟังก์ชัน Cloud ที่ท ริกเกอร์โดยเหตุการณ์ Cloud Storage โดยใช้โปรแกรมจำลอง เมื่อทั้ง Cloud Storage และ Cloud Function emulators ทำงานอยู่ ทั้งคู่จะทำงานร่วมกันโดยอัตโนมัติ

Admin SDKs

Firebase Admin SDK เชื่อมต่อกับโปรแกรมจำลอง Cloud Storage โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_STORAGE_EMULATOR_HOST :

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

โปรดทราบว่าโปรแกรมจำลอง Cloud Functions จะรับรู้ถึงโปรแกรมจำลอง Cloud Storage โดยอัตโนมัติ คุณจึงข้ามขั้นตอนนี้ได้เมื่อทดสอบการผสานการทำงานระหว่าง Cloud Functions และโปรแกรมจำลอง Cloud Storage ตัวแปรสภาพแวดล้อมจะได้รับการตั้งค่าโดยอัตโนมัติสำหรับ Admin SDK ใน Cloud Storage

หากคุณต้องการให้โค้ด Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่ใช้ร่วมกันที่ทำงานในสภาพแวดล้อมอื่น คุณจะต้องระบุ รหัสโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าโดยใช้ Firebase CLI คุณสามารถส่งรหัสโปรเจ็กต์เพื่อ initializeApp แอปโดยตรงหรือตั้งค่าตัวแปรสภาพแวดล้อม GCLOUD_PROJECT

Node.js ผู้ดูแลระบบ SDK
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"

นำเข้าและส่งออกข้อมูล

ฐานข้อมูลและโปรแกรมจำลอง Cloud Storage ช่วยให้คุณสามารถส่งออกข้อมูลจากอินสแตนซ์ของโปรแกรมจำลองที่ทำงานอยู่ กำหนดชุดข้อมูลพื้นฐานเพื่อใช้ในการทดสอบหน่วยหรือเวิร์กโฟลว์การรวมอย่างต่อเนื่อง จากนั้นส่งออกเพื่อแชร์ระหว่างทีม

firebase emulators:export ./dir

ในการทดสอบ เมื่อเริ่มต้นโปรแกรมจำลอง ให้นำเข้าข้อมูลพื้นฐาน

firebase emulators:start --import=./dir

คุณสามารถสั่งให้อีมูเลเตอร์เอ็กซ์พอร์ตข้อมูลเมื่อปิดระบบ ไม่ว่าจะระบุพาธเอ็กซ์พอร์ตหรือเพียงแค่ใช้พาธที่ส่งผ่านไปยังแฟ --import

firebase emulators:start --import=./dir --export-on-exit

ตัวเลือกการนำเข้าและส่งออกข้อมูลเหล่านี้ใช้ได้กับคำสั่ง firebase emulators:exec เช่นกัน สำหรับข้อมูลเพิ่มเติม โปรดดูการ อ้างอิงคำสั่งอีมู เลเตอร์

Cloud Storage emulator แตกต่างจากการผลิตอย่างไร

สำหรับการทดสอบแอปไคลเอ็นต์ โปรแกรมจำลอง Cloud Storage จะปรับให้เข้ากับการผลิตได้เกือบสมบูรณ์แบบโดยคำนึงถึงพื้นที่ผิวของ Firebase API คำสั่ง Firebase ทั้งหมดคาดว่าจะทำงานระหว่าง Firebase SDK ปกติ (แพลตฟอร์มเว็บ, Android และ Apple)

สำหรับการทดสอบแอปฝั่งเซิร์ฟเวอร์ มีข้อจำกัด Firebase Admin SDK ใช้พื้นผิว Google Cloud API และไม่มีการจำลองปลายทางทั้งหมดของ API นี้ ตามหลักการทั่วไปแล้ว ทุกสิ่งที่สามารถทำได้จาก SDK ของไคลเอ็นต์ (การอัปโหลดหรือการลบไฟล์ การรับและการตั้งค่าข้อมูลเมตา) ก็จะถูกนำไปใช้งานจาก Admin SDK ด้วยเช่นกัน แต่สิ่งอื่นๆ นอกเหนือจากนั้นไม่ใช่ การยกเว้นที่โดดเด่นมีการระบุไว้ด้านล่าง

คลาวด์ IAM

Firebase Emulator Suite จะไม่พยายามทำซ้ำหรือเคารพพฤติกรรมที่เกี่ยวข้องกับ IAM สำหรับการรัน โปรแกรมจำลองปฏิบัติตามกฎความปลอดภัยของ Firebase ที่มีให้ แต่ในสถานการณ์ที่ปกติแล้ว IAM จะถูกใช้ ตัวอย่างเช่น การตั้งค่า Cloud Functions ที่เรียกใช้บัญชีบริการและการอนุญาต โปรแกรมจำลองจะไม่สามารถกำหนดค่าได้และจะใช้บัญชีที่พร้อมใช้งานทั่วโลกบนเครื่องของนักพัฒนาซอฟต์แวร์ของคุณ คล้ายกับการรันสคริปต์ในเครื่องโดยตรง

การแจ้งเตือนผับ/ย่อย

โปรแกรมจำลอง Cloud Storage ไม่ได้ผสานรวมกับโปรแกรมจำลอง Cloud Pub/Sub ดังนั้นจึงไม่รองรับการสร้างช่องทาง/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์ที่เก็บข้อมูล เราขอแนะนำให้ใช้ทริกเกอร์ Cloud Functions Storage โดยตรง

ข้อมูลเมตาระดับที่เก็บข้อมูล

โปรแกรมจำลอง Cloud Storage ไม่รองรับการกำหนดค่าระดับบัคเก็ตใดๆ รวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับบัคเก็ต ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้เมื่อเวลาผ่านไป

อะไรต่อไป?

  • สำหรับชุดวิดีโอที่ได้รับการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตาม เพลย์ลิสต์การฝึกอบรม Firebase Emulators
  • เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมกับ Cloud Storage ทั่วไป โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ Cloud Functions for Firebase emulator ที่ ฟังก์ชัน Run ใน เครื่อง