Check out what’s new from Firebase at Google I/O 2022. Learn more

חבר את האפליקציה שלך לאמולטור Cloud Storage

לפני חיבור האפליקציה שלך לאמולטור 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 אמיתית ואין משאבים חיים. פרויקטים אלה נגישים בדרך כלל באמצעות מעבדות קוד או מדריכים אחרים.

מזהי פרויקטים עבור פרויקטי הדגמה כוללים את demo- הדגמה.

כשאתה עובד עם פרויקטי הדגמה של Firebase, האפליקציות והקוד שלך מקיימים אינטראקציה עם אמולטורים בלבד . אם האפליקציה שלך תנסה ליצור אינטראקציה עם משאב שעבורו לא פועל אמולטור, הקוד הזה ייכשל.

אנו ממליצים להשתמש בפרויקטי הדגמה בכל מקום אפשרי. ההטבות כוללות:

  • הגדרה קלה יותר, מכיוון שאתה יכול להפעיל את האמולטורים מבלי ליצור פרויקט Firebase
  • בטיחות חזקה יותר, מכיוון שאם הקוד שלך מפעיל בטעות משאבים (ייצור) שאינם מחוקים, אין סיכוי לשינוי נתונים, שימוש וחיוב
  • תמיכה טובה יותר במצב לא מקוון, מכיוון שאין צורך לגשת לאינטרנט כדי להוריד את תצורת ה-SDK שלך.

מכשיר את האפליקציה שלך לדבר עם האמולטורים

פלטפורמות אנדרואיד, אפל וערכות פיתוח אינטרנט

הגדר את התצורה בתוך האפליקציה או שיעורי בדיקה לאינטראקציה עם אמולטור Cloud Storage כדלקמן.

דְמוּי אָדָם
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
מָהִיר
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 Storage באמצעות האמולטור. כאשר האמולטורים של Cloud Storage ו-Cloud Functions פועלים, הם פועלים באופן אוטומטי יחד.

ערכות SDK של מנהל מערכת

ערכות ה-SDK של Firebase Admin מתחברות אוטומטית לאמולטור 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 Admin 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 שונה מהייצור

לבדיקת אפליקציות לקוח, אמולטור Cloud Storage מתיישר לייצור באופן כמעט מושלם ביחס לשטח הפנים של Firebase API. כל הפקודות של Firebase צפויות לעבוד בין ה-SDKs הרגילים של Firebase (פלטפורמות אינטרנט, אנדרואיד ואפל).

לבדיקה של אפליקציות בצד השרת, קיימות מגבלות. ערכות ה-SDK של Firebase Admin משתמשות במשטח Google Cloud API, ולא כל נקודות הקצה של ה-API הזה עוברות חיקוי. ככלל אצבע, כל דבר שניתן לעשות מ-SDK של הלקוח (העלאה או מחיקה של קבצים, קבלת והגדרת מטא-נתונים) מיושם גם לשימוש מ-SDK של Admin, אבל כל דבר מעבר לכך לא. אי הכללות בולטות מפורטות להלן.

ענן IAM

Firebase Emulator Suite אינו מנסה לשכפל או לכבד כל התנהגות הקשורה ל-IAM בהפעלה. אמולטורים מצייתים לכללי האבטחה של Firebase שסופקו, אך במצבים שבהם בדרך כלל נעשה שימוש ב-IAM, למשל כדי להגדיר פונקציות ענן המפעילות חשבון שירות ובכך הרשאות, האמולטור אינו ניתן להגדרה וישתמש בחשבון הזמין בכל העולם במחשב המפתחים שלך, בדומה להפעלת סקריפט מקומי ישירות.

הודעות Pub/Sub

אמולטור ה-Cloud Storage אינו משתלב עם אמולטור ה-Cloud Pub/Sub ולכן אינו תומך ביצירת ערוצים/התראות לשינויים באובייקטי אחסון. אנו ממליצים להשתמש ישירות בטריגרים של Cloud Functions Storage.

מטא נתונים ברמת הדלי

אמולטור Cloud Storage אינו תומך באף תצורה ברמת הדלי, כולל מחלקת אחסון, תצורת CORS ברמת הדלי, תוויות או מדיניות שמירה. Firebase מתכוון לשפר את התמיכה הזו לאורך זמן.

מה הלאה?