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

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

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

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

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

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

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

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

התקן את האפליקציה שלך לפונקציות הניתנות להתקשרות

אם אב הטיפוס ופעילויות הבדיקה שלך כוללות פונקציות אחורי הניתנות להתקשרות , הגדר את האינטראקציה עם אמולטור Cloud Functions for Firebase כך:

דְמוּי אָדָם
        // 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);
מָהִיר
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Web version 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Web version 8

firebase.functions().useEmulator("localhost", 5001);

מכשיר את האפליקציה שלך לאמולציה של פונקציות HTTPS

כל פונקציית HTTPS בקוד שלך תוגש מהאמולטור המקומי באמצעות פורמט כתובת האתר הבא:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

לדוגמה, פונקציית helloWorld פשוטה עם יציאת ברירת המחדל והאזור המארח תוגש ב:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

מכשיר את האפליקציה שלך לאמולציה של פונקציות המופעלות על רקע

אמולטור Cloud Functions תומך בפונקציות המופעלות על רקע מהמקורות הבאים:

  • אמולטור מסדי נתונים בזמן אמת
  • אמולטור Cloud Firestore
  • אמולטור אימות
  • אמולטור פאב/סאב

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

הגדר סביבת בדיקה מקומית

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

בעת שימוש באמולטור Cloud Functions מקומי, אתה יכול לעקוף משתני סביבה עבור הפרויקט שלך על ידי הגדרת קובץ .env.local . התוכן של .env.local מקבל עדיפות על פני .env ה- .env הספציפי לפרויקט.

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

.env .env.dev .env.local
PLANET=כדור הארץ

קהל=בני אדם

AUDIENCE=Dev Humans קהל = בני אדם מקומיים

כאשר מופעל בהקשר המקומי, האמולטור טוען את משתני הסביבה כפי שמוצג:

  $ 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 עם ממשק בסגנון REPL לפיתוח. אין אינטגרציה עם אמולטורים של Cloud Firestore או Realtime Database. באמצעות המעטפת, אתה לועג לנתונים ומבצע קריאות פונקציה כדי לדמות אינטראקציה עם מוצרים ש-Local Emulator Suite לא תומכת כרגע: Analytics, Remote Config ו-Crashlytics.
  • Firebase Test SDK for Cloud Functions, Node.js עם מסגרת מוקה לפיתוח פונקציות. למעשה, ה-Cloud Functions Test SDK מספק אוטומציה בראש מעטפת Cloud Functions.

תוכל למצוא עוד על מעטפת Cloud Functions ו-Cloud Functions Test SDK ב- test functions in interactive and Unit testing of Cloud Functions .

כיצד אמולטור Cloud Functions שונה מהייצור

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

ענן IAM

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

הגבלות זיכרון ומעבד

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

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

תכנון הבדלים בסביבות מקומיות וייצור

מכיוון שהאמולטור פועל על המחשב המקומי שלך, זה תלוי בסביבה המקומית שלך עבור יישומים ותוכניות מובנות וכלי עזר.

שים לב שהסביבה המקומית שלך לפיתוח פונקציות ענן עשויה להיות שונה מסביבת הייצור של Google:

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

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

מנסה שוב

אמולטור Cloud Functions אינו תומך בניסיון חוזר של פונקציות במקרה של כשל.

מה הלאה?