חבר את האפליקציה שלך לאמולטור 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 כך:

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
Java
// 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://127.0.0.1:5001")

Web modular API

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

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

Web namespaced API

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

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

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

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

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

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

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

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

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

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

מטפלי בדיקה עבור אירועים מותאמים אישית הנפלטים על ידי הרחבות

עבור פונקציות שאתה מיישם כדי לטפל באירועים מותאמים אישית של Firebase Extensions עם Cloud Functions v2, אמולטור Cloud Functions מתחבר עם אמולטור Eventarc כדי לתמוך בטריגרים של Eventarc .

כדי לבדוק מטפלי אירועים מותאמים אישית עבור תוספים שפולטים אירועים, עליך להתקין את האמולטורים של Cloud Functions ו-Eventarc.

זמן הריצה של Cloud Functions מגדיר את משתנה הסביבה EVENTARC_EMULATOR ל- localhost:9299 בתהליך הנוכחי אם האמולטור של Eventarc פועל. ערכות ה-SDK של Firebase Admin מתחברים אוטומטית לאמולטור Eventarc כאשר משתנה הסביבה EVENTARC_EMULATOR מוגדר. אתה יכול לשנות את יציאת ברירת המחדל כפי שנדון תחת הגדרת חבילת אמולטור מקומית .

כאשר משתני סביבה מוגדרים כהלכה, Firebase Admin SDK שולח באופן אוטומטי אירועים לאמולטור Eventarc. בתורו, אמולטור Eventarc מבצע קריאה חזרה לאמולטור Cloud Functions כדי להפעיל מטפלים רשומים.

אתה יכול לבדוק יומני פונקציות בממשק המשתמש של Emulator Suite לקבלת פרטים על ביצוע מטפל.

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

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

מנסה שוב

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

מה הלאה?