לפני שמחברים את האפליקציה לאמולטור של Cloud Storage for Firebase, חשוב לוודא שמבינים את תהליך העבודה הכולל של Firebase Local Emulator Suite, שהתקנתם והגדרתם את Local Emulator Suite ושבדקתם את פקודות ה-CLI שלו.
בחירת פרויקט ב-Firebase
Firebase Local Emulator Suite מדמה מוצרים לפרויקט Firebase יחיד.
כדי לבחור את הפרויקט שבו רוצים להשתמש, לפני שמפעילים את האמולטורים, מריצים את הפקודה firebase use בספריית העבודה ב-CLI. אפשר גם להעביר את הדגל --project לכל פקודה של אמולטור.
Local Emulator Suite תומך באמולציה של פרויקטים אמיתיים ב-Firebase ושל פרויקטים לדוגמה.
| סוג הפרויקט | תכונות | שימוש עם אמולטורים |
|---|---|---|
| Real |
פרויקט Firebase אמיתי הוא פרויקט שיצרתם והגדרתם (ברוב המקרים דרך Firebaseהמסוף). בפרויקטים אמיתיים יש משאבים פעילים, כמו מופעים של מסדי נתונים, קטגוריות אחסון, פונקציות או כל משאב אחר שהגדרתם לפרויקט הזה ב-Firebase. |
כשעובדים עם פרויקטים אמיתיים ב-Firebase, אפשר להפעיל אמולטורים לכל המוצרים הנתמכים או לחלק מהם. לכל המוצרים שאתם לא מדמים, האפליקציות והקוד שלכם יפעלו עם משאב פעיל (מופע של מסד נתונים, קטגוריית אחסון, פונקציה וכו'). |
| הדגמה |
לפרויקט הדגמה ב-Firebase אין הגדרה אמיתית של Firebase ואין משאבים פעילים. בדרך כלל ניגשים לפרויקטים האלה באמצעות סדנאות קוד או מדריכים אחרים. מזהי פרויקטים של פרויקטים לדוגמה מתחילים בקידומת |
כשעובדים עם הדגמות של פרויקטים ב-Firebase, האפליקציות והקוד מקיימים אינטראקציה רק עם אמולטורים. אם האפליקציה מנסה ליצור אינטראקציה עם משאב שלא מופעל בו אמולטור, הקוד ייכשל. |
מומלץ להשתמש בפרויקטים לדוגמה ככל האפשר. ההטבות כוללות:
- ההגדרה קלה יותר, כי אפשר להריץ את האמולטורים בלי ליצור פרויקט Firebase
- רמת בטיחות גבוהה יותר, כי אם הקוד שלכם מפעיל בטעות משאבים לא מדומיים (בסביבת ייצור), אין סיכוי לשינוי נתונים, לשימוש ולחיוב
- תמיכה טובה יותר במצב אופליין, כי אין צורך לגשת לאינטרנט כדי להוריד את הגדרות ה-SDK.
לבצע אינסטרומנטציה באפליקציה כדי לתקשר עם האמולטורים
SDK ל-Android, לפלטפורמות של אפל ולאינטרנט
מגדירים את ההגדרות באפליקציה או את מחלקות הבדיקה כדי ליצור אינטראקציה עם האמולטור Cloud Storage for Firebase באופן הבא.
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
אין צורך בהגדרה נוספת כדי לבדוק פונקציות של Cloud שמופעלות על ידי אירועים של Cloud Storage for Firebase באמצעות האמולטור. כששני האמולטורים Cloud Storage for Firebase ו-Cloud Functions פועלים, הם פועלים יחד באופן אוטומטי.
Admin SDK שניות
ה-Firebase Admin SDKs מתחברים אוטומטית לאמולטור Cloud Storage for Firebase כשהמשתנה סביבה FIREBASE_STORAGE_EMULATOR_HOST מוגדר:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
שימו לב: האמולטור Cloud Functions מודע אוטומטית לאמולטור Cloud Storage for Firebase, כך שאפשר לדלג על השלב הזה כשבודקים שילובים בין אמולטורים של Cloud Functions ושל Cloud Storage for Firebase. משתנה הסביבה יוגדר אוטומטית עבור Admin SDK ב-Cloud Storage for Firebase.
אם רוצים שהקוד Admin SDK יתחבר לאמולטור משותף שפועל בסביבה אחרת, צריך לציין את אותו מזהה פרויקט שהגדרתם באמצעות Firebase CLI.
אפשר להעביר מזהה פרויקט ישירות אל initializeApp או להגדיר את משתנה הסביבה GCLOUD_PROJECT.
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
משתנה סביבה
export GCLOUD_PROJECT="your-project-id"
ייבוא וייצוא של נתונים
מסד הנתונים והאמולטורים של Cloud Storage for Firebase מאפשרים לייצא נתונים ממופע אמולטור פעיל. מגדירים קבוצת נתוני בסיס לשימוש בבדיקות היחידה או בתהליכי העבודה של האינטגרציה הרציפה, ואז מייצאים אותה כדי לשתף אותה עם הצוות.
firebase emulators:export ./dirבבדיקות, כשמפעילים את האמולטור, מייבאים את נתוני הבסיס.
firebase emulators:start --import=./dirאפשר להנחות את האמולטור לייצא נתונים בעת כיבוי, או לציין נתיב ייצוא או פשוט להשתמש בנתיב שמועבר לדגל --import.
firebase emulators:start --import=./dir --export-on-exitאפשר להשתמש באפשרויות האלה לייבוא וייצוא של נתונים גם עם הפקודה firebase emulators:exec. מידע נוסף זמין במדריך הפקודות של האמולטור.
ההבדלים בין Cloud Storage for Firebase האמולטור לבין הסביבה הפרודקטיבית
לצורך בדיקה של אפליקציות לקוח, Cloud Storage for Firebaseהאמולטור תואם כמעט באופן מושלם לסביבת הייצור מבחינת אזור ה-API של Firebase. כל הפקודות של Firebase אמורות לפעול בין ערכות ה-SDK הרגילות של Firebase (אינטרנט, Android ופלטפורמות של אפל).
יש מגבלות על בדיקה של אפליקציות בצד השרת. ערכות Firebase Admin SDK משתמשות ב-Google Cloud API surface, ולא כל נקודות הקצה של ה-API הזה עוברות אמולציה. ככלל, כל מה שאפשר לעשות באמצעות ה-SDKs של הלקוח (העלאה או מחיקה של קבצים, קבלת מטא-נתונים והגדרתם) מיושם גם לשימוש באמצעות ה-Admin SDKs, אבל כל מה שמעבר לכך לא מיושם. בהמשך מפורטות החרגות חשובות.
מה ההבדל מ-Google Cloud Storage
המוצר Cloud Storage for Firebase, כולל אמולטור האחסון, מספק קבוצת משנה של פונקציות Google Cloud Storage (GCS) שמתמקדות באובייקטים של אחסון, והוא מאוד שימושי לפיתוח אפליקציות Firebase. Cloud Storage for Firebase שונה מ-GCS בדרכים הבאות:
- בשלב הזה, Cloud Storage for Firebase לא תומך בממשקי API של
Bucketליצירה, להצגה, לאחזור או למחיקה של מאגרי אחסון. - מתוך Google Cloud Storage Objects API, נתמכות ה-methods הבאות:
copy, delete, get, insert, list,patch, rewrite, update.
Cloud IAM
הכלים לאמולטור ב-Firebase לא מנסים לשכפל או להתייחס להתנהגות שקשורה ל-IAM לצורך הפעלה. האמולטורים פועלים בהתאם לכללי האבטחה שסופקו ב-Firebase, אבל במצבים שבהם בדרך כלל נעשה שימוש ב-IAM, למשל כדי להגדיר חשבון שירות להפעלת Cloud Functions וכך גם הרשאות, אי אפשר להגדיר את האמולטור והוא ישתמש בחשבון שזמין באופן גלובלי במחשב הפיתוח, בדומה להרצה ישירה של סקריפט מקומי.
התראות Pub/Sub
האמולטור של Cloud Storage for Firebase לא משולב עם האמולטור של Cloud Pub/Sub ולכן הוא לא תומך ביצירת ערוצים או התראות לשינויים באובייקטים של אחסון. מומלץ להשתמש ישירות בטריגרים של Cloud Functions Storage.
מטא-נתונים ברמת הקטגוריה
האמולטור Cloud Storage for Firebase לא תומך בהגדרות ברמת הקטגוריה, כולל סוג אחסון, הגדרות CORS ברמת הקטגוריה, תוויות או מדיניות שמירה. אנחנו ב-Firebase מתכוונים לשפר את התמיכה הזו לאורך זמן.
מה הלאה?
- כדי לראות אוסף של סרטונים ודוגמאות מפורטות, אפשר לעיין בפלייליסט ההדרכה בנושא Firebase Emulators.
- פונקציות מופעלות הן שילוב אופייני עם Cloud Storage for Firebase, מידע נוסף על האמולטור זמין במאמר הרצת פונקציות באופן מקומי.Cloud Functions for Firebase