Cloud Functions הוא אזורי, כלומר התשתית שמפעילה את הפונקציה נמצאת באזורים ספציפיים ומנוהלת על ידי Google כדי להיות זמינה באופן יתיר בכל התחומים בתוך האזורים האלה.
כשאתם בוחרים באזורים שבהם תפעלו את הפונקציות, השיקולים העיקריים צריכים להיות זמן האחזור והזמינות. באופן כללי, אפשר לבחור אזורים שקרובים למשתמשים, אבל כדאי גם להביא בחשבון את המיקום של המוצרים והשירותים האחרים שבהם האפליקציה משתמשת. שימוש בשירותים במספר אזורים יכול להשפיע על זמן האחזור של האפליקציה וגם על התמחור.
כברירת מחדל, הפונקציות פועלות באזור us-central1
. חשוב לזכור שהאזור הזה עשוי להיות שונה מהאזור של מקור האירוע, כמו קטגוריה Cloud Storage.
בהמשך הדף מוסבר איך מציינים את האזור שבו הפונקציה פועלת.
אזורים נתמכים
ברשימות שבקטע הזה, הסמל energy_savings_leaf מציין שהחשמל באזור הזה מיוצר עם פליטות פחמן נמוכות. למידע נוסף, ראו אנרגיה ללא פחמן באזורים של Google Cloud.
תמחור ברמה 1
Cloud Functions זמין באזורים הבאים עם תמחור ברמה 1:
אזור | מיקום | גרסאות המוצר הנתמכות | פליטות CO2 |
---|---|---|---|
asia-east1 |
טאיוואן | דור ראשון, דור שני | |
asia-east2 |
הונג קונג | דור ראשון בלבד | |
asia-northeast1 |
טוקיו | דור ראשון, דור שני | |
asia-northeast2 |
אוסקה | דור ראשון, דור שני | |
europe-north1 |
פינלנד | דור שני בלבד | energy_savings_leaf |
europe-southwest1 |
מדריד | דור שני בלבד | |
europe-west1 |
בלגיה | דור ראשון, דור שני | energy_savings_leaf . |
europe-west4 |
הולנד | דור שני בלבד | |
europe-west8 |
מילאנו | דור שני בלבד | |
europe-west9 |
פריז | דור שני בלבד | energy_savings_leaf |
me-west1 |
תל-אביב | דור שני בלבד | |
europe-west2 |
לונדון | דור ראשון בלבד | |
us-central1 |
אייווה | דור ראשון, דור שני | energy_savings_leaf . |
us-east1 |
דרום קרוליינה | דור ראשון, דור שני | |
us-east4 |
צפון וירג'יניה | דור ראשון, דור שני | |
us-east5 |
קולומבוס | דור שני בלבד | |
us-south1 |
דאלאס | דור שני בלבד | |
us-west1 |
אורגון | דור ראשון, דור שני | energy_savings_leaf . |
תמחור ברמה 2
Cloud Functions זמין באזורים הבאים עם תמחור ברמה 2:
אזור | מיקום | גרסאות המוצר הנתמכות | פליטות CO2 |
---|---|---|---|
asia-east2 |
הונג קונג | דור שני בלבד | |
asia-northeast3 |
סיאול | דור ראשון, דור שני | |
asia-southeast1 |
סינגפור | דור ראשון, דור שני | |
asia-southeast2 |
ג'אקארטה | דור ראשון, דור שני | |
asia-south1 |
מומבאי | דור שני בלבד | |
asia-south2 |
דלהי, הודו | דור שני בלבד | |
australia-southeast1 |
סידני | דור ראשון, דור שני | |
australia-southeast2 |
מלבורן | דור שני בלבד | |
europe-central2 |
ורשה | דור ראשון, דור שני | |
europe-west2 |
לונדון | דור שני בלבד | |
europe-west3 |
פרנקפורט | דור ראשון, דור שני | energy_savings_leaf . |
europe-west6 |
ציריך | דור ראשון, דור שני | energy_savings_leaf |
europe-west10 |
ברלין | דור שני בלבד | |
europe-west12 |
טורינו | דור שני בלבד | |
me-central1 |
דוחה | דור שני בלבד | |
me-central2 |
דמאם | דור שני בלבד | |
northamerica-northeast1 |
מונטריאול | דור ראשון, דור שני | energy_savings_leaf |
northamerica-northeast2 |
טורונטו | דור שני בלבד | energy_savings_leaf |
southamerica-east1 |
סאו פאולו | דור ראשון, דור שני | energy_savings_leaf |
southamerica-west1 |
סנטיאגו, צ'ילה | דור שני בלבד | |
us-west2 |
לוס-אנג׳לס | דור ראשון, דור שני | |
us-west3 |
סולט לייק סיטי | דור ראשון, דור שני | |
us-west4 |
לאס וגאס | דור ראשון, דור שני |
לפונקציות באזור מסוים בפרויקט מסוים צריכים להיות שמות ייחודיים (ללא קשר לאותיות רישיות), אבל פונקציות באזורים שונים או בפרויקטים שונים יכולות לשתף את אותו שם.
שיטות מומלצות לציון אזור
כברירת מחדל, הפונקציות פועלות באזור us-central1
. חשוב לזכור שהאזור הזה עשוי להיות שונה מהאזור של מקור האירוע, כמו קטגוריה Cloud Storage. אם אתם צריכים לציין את האזור שבו הפונקציה פועלת, פועלים לפי ההמלצות שבקטע הזה לכל סוג של טריגר לפונקציה.
כדי להגדיר את האזור שבו הפונקציה פועלת, מגדירים את הפרמטר region
בהגדרת הפונקציה, כפי שמתואר בהמשך:
Node.js
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
Python
# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
pass
# After
@firestore_fn.on_document_created("my-collection/{docId}",
region="asia-northeast1")
def firestore_trigger_asia(event):
pass
אפשר לציין מספר אזורים על ידי העברת מספר מחרוזות אזורים שמופרדות בפסיקים ב-region
. כמו כן, כשמציינים אזור לסוגים רבים של טריגרים ברקע, צריך לציין את מסנן האירועים הנכון יחד עם האזור. בדוגמה שלמעלה, זהו ה-Cloud Firestore document
שמפיק את האירוע. לטריגר Cloud Storage, מסנן האירועים יכול להיות bucket
. לטריגר Pub/Sub, הוא יהיה topic
וכן הלאה.
במאמר שינוי האזור של פונקציה מוסבר איך משנים את האזור של פונקציה שמטפלת בתנועה בסביבת הייצור.
פונקציות HTTP ופונקציות קריאה ללקוח
לגבי פונקציות HTTP ופונקציות שניתן לבצע קריאה להן, מומלץ קודם להגדיר את הפונקציה לאזור היעד, או לאזור הקרוב ביותר למיקום שבו נמצאים רוב הלקוחות הצפויים, ואז לשנות את הפונקציה המקורית כדי להפנות את בקשת ה-HTTP שלה לפונקציה החדשה (אפשר להשתמש בשם זהה לשתי הפונקציות). אם הלקוחות של פונקציית ה-HTTP תומכים בהפניות אוטומטיות, אתם יכולים פשוט לשנות את הפונקציה המקורית כך שתחזיר את הסטטוס של הפניה אוטומטית מסוג HTTP (301) יחד עם כתובת ה-URL של הפונקציה החדשה. אם הלקוחות שלכם לא מטפלים היטב בהפניות אוטומטיות, תוכלו להעביר את הבקשה דרך שרת proxy מהפונקציה המקורית לפונקציה החדשה, על ידי שליחת בקשה חדשה מהפונקציה המקורית לפונקציה החדשה. השלב האחרון הוא לוודא שכל הלקוחות מפעילים את הפונקציה החדשה.
בחירת מיקום בצד הלקוח לפונקציות שניתן להפעיל
בנוגע לפונקציה שניתן לקרוא לה, ההגדרות של הקריאה מהלקוח צריכות לפעול לפי אותן הנחיות כמו פונקציות HTTP. הלקוח יכול גם לציין אזור, וחייב לעשות זאת אם הפונקציה פועלת בכל אזור מלבד us-central1
.
כדי להגדיר אזורים אצל הלקוח, צריך לציין את האזור הרצוי בזמן האתחול:
Swift
lazy var functions = Functions.functions(region:"europe-west1")
Objective-C
@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];
אינטרנט
var functions = firebase.app().functions('europe-west1');
Android
private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");
C++
firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");
Unity
firebase.Functions.FirebaseFunctions functions;
functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");
פונקציות ברקע
פונקציות ברקע משתמשות בסמינטיקת העברת אירועים של לפחות פעם אחת, כלומר שבנסיבות מסוימות הן עשויות לקבל אירועים כפולים. לכן, כדאי להטמיע פונקציות כך שיהיו עמידות בפני שינוי (idempotent). אם הפונקציה כבר חד-פעמית, תוכלו לפרוס מחדש את הפונקציה באזור החדש עם אותו טריגר אירוע ולהסיר את הפונקציה הישנה אחרי שתבדקו שהפונקציה החדשה מקבלת תנועה בצורה תקינה. במהלך המעבר, שתי הפונקציות יקבלו אירועים. במאמר שינוי האזור של פונקציה מפורטת רצף הפקודות המומלץ לשינוי האזורים של פונקציות.
אם הפונקציה שלכם לא אידמפוטנטית כרגע, או שהאידמפוטנטיות שלה לא מרחיבה מעבר לאזור, מומלץ להטמיע אידמפוטנטיות לפני העברת הפונקציה.
ההמלצות לאזורים אופטימליים משתנות בהתאם לסוג הטריגר של האירוע:
סוג הטריגר | המלצה לגבי אזור |
---|---|
Cloud Firestore | האזור הקרוב ביותר למיקום המכונה Cloud Firestore (ראו הקטע הבא) |
Realtime Database | תמיד us-central1 |
Cloud Storage | האזור הקרוב ביותר למיקום הקטגוריה Cloud Storage (מידע נוסף בקטע הבא) |
אחרים | אם אתם מבצעים אינטראקציה עם מכונה של Realtime Database, מכונה של Cloud Firestore או קטגוריה של Cloud Storage בתוך הפונקציה, האזור המומלץ הוא אותו אזור שבו מופעלת פונקציה על ידי אחד מהמשאבים האלה. אחרת, יש להשתמש באזור ברירת המחדל us-central1 .
פונקציות שמקושרות ל-Firebase Hosting יכולות להיות בכל אזור, אבל מומלץ לעיין בסקירה הכללית על אירוח ללא שרת. |
בחירת אזורים לפי Cloud Firestore ו-Cloud Storage מיקומים
האזורים הזמינים לפונקציות לא תמיד תואמים בדיוק לאזורים הזמינים למסד הנתונים Cloud Firestore ולקטגוריות Cloud Storage.
חשוב לזכור שאם הפונקציה והמשאב (מכונה של מסד נתונים או קטגוריה של Cloud Storage) נמצאים במיקומים שונים, ייתכן שתבחינו בעלייה בזמן האחזור ובעלויות החיוב.
בהמשך מופיעה מיפוי של האזורים הקרובים ביותר עם תמיכה בפונקציות של Cloud Firestore ו-Cloud Storage, למקרים שבהם אין תמיכה באותו אזור:
אזור/מספר אזורים עבור Cloud Firestore ו-Cloud Storage | האזור הקרוב ביותר לפונקציות |
---|---|
nam5 או us-central (במספר אזורים) |
us-central1 |
eur3 או europe-west (במספר אזורים) |
europe-west1 |
europe-west4 (הולנד) |
europe-west1 |
asia-south1 (מומבאי) |
asia-east2 |
asia-south2 (דלהי) |
asia-east2 |
australia-southeast2 (מלבורן) |
australia-southeast1 |