Cloud Functions 具有「地區性」,這表示執行函式的基礎架構位於特定地區,並由 Google 代管,可為這些地區內的所有區域提供備援功能。
選擇執行函式的地區時,請將延遲時間和可用性列為主要考量因素。一般來說,您可以選擇距離使用者最近的地區,但也應該考慮應用程式使用的其他產品和服務所處的位置。如果跨多個地區使用服務,可能會影響應用程式的延遲時間和定價。
根據預設,函式會在 us-central1
區域中執行。請注意,這可能與事件來源的區域 (例如 Cloud Storage 值區) 不同。請參閱本頁後續內容,瞭解如何指定函式執行的地區。
支援的地區
在本節的清單中,energy_savings_leaf 圖示表示該地區的電力是透過低碳排放方式產生。如需更多資訊,請參閱「Google Cloud 區域的無碳能源」。
級別 1 定價
Cloud Functions 可在下列採用級別 1 價格的地區使用:
區域 | 位置 | 支援的產品版本 | 二氧化碳排放量 |
---|---|---|---|
asia-east1 |
台灣 | 第 1 代、第 2 代 | |
asia-east2 |
香港 | 僅限第 1 代 | |
asia-northeast1 |
東京 | 第 1 代、第 2 代 | |
asia-northeast2 |
大阪 | 第 1 代、第 2 代 | |
europe-north1 |
芬蘭 | 僅限第 2 代 | energy_savings_leaf |
europe-southwest1 |
馬德里 | 僅限第 2 代 | |
europe-west1 |
比利時 | 第 1 代、第 2 代 | energy_savings_leaf |
europe-west4 |
荷蘭 | 僅限第 2 代 | |
europe-west8 |
米蘭 | 僅限第 2 代 | |
europe-west9 |
巴黎 | 僅限第 2 代 | energy_savings_leaf |
me-west1 |
特拉維夫 | 僅限第 2 代 | |
europe-west2 |
倫敦 | 僅限第 1 代 | |
us-central1 |
愛荷華州 | 第 1 代、第 2 代 | energy_savings_leaf |
us-east1 |
南卡羅來納州 | 第 1 代、第 2 代 | |
us-east4 |
北維吉尼亞州 | 第 1 代、第 2 代 | |
us-east5 |
哥倫布 | 僅限第 2 代 | |
us-south1 |
達拉斯 | 僅限第 2 代 | |
us-west1 |
奧勒岡州 | 第 1 代、第 2 代 | energy_savings_leaf |
級別 2 定價
下列地區提供 Cloud Functions 的第 2 層級定價:
區域 | 位置 | 支援的產品版本 | 二氧化碳排放量 |
---|---|---|---|
asia-east2 |
香港 | 僅限第 2 代 | |
asia-northeast3 |
首爾 | 第 1 代、第 2 代 | |
asia-southeast1 |
新加坡 | 第 1 代、第 2 代 | |
asia-southeast2 |
雅加達 | 第 1 代、第 2 代 | |
asia-south1 |
孟買 | 僅限第 2 代 | |
asia-south2 |
印度德里 | 僅限第 2 代 | |
australia-southeast1 |
雪梨 | 第 1 代、第 2 代 | |
australia-southeast2 |
墨爾本 | 僅限第 2 代 | |
europe-central2 |
華沙 | 第 1 代、第 2 代 | |
europe-west2 |
倫敦 | 僅限第 2 代 | |
europe-west3 |
法蘭克福 | 第 1 代、第 2 代 | energy_savings_leaf |
europe-west6 |
蘇黎世 | 第 1 代、第 2 代 | energy_savings_leaf |
europe-west10 |
柏林 | 僅限第 2 代 | |
europe-west12 |
杜林 | 僅限第 2 代 | |
me-central1 |
杜哈 | 僅限第 2 代 | |
me-central2 |
達曼 | 僅限第 2 代 | |
northamerica-northeast1 |
蒙特婁 | 第 1 代、第 2 代 | energy_savings_leaf |
northamerica-northeast2 |
多倫多 | 僅限第 2 代 | energy_savings_leaf |
southamerica-east1 |
聖保羅 | 第 1 代、第 2 代 | energy_savings_leaf |
southamerica-west1 |
智利聖地牙哥 | 僅限第 2 代 | |
us-west2 |
洛杉磯 | 第 1 代、第 2 代 | |
us-west3 |
鹽湖城 | 第 1 代、第 2 代 | |
us-west4 |
拉斯維加斯 | 第 1 代、第 2 代 |
指定專案內指定地區中的函式必須擁有唯一 (不區分大小寫) 名稱,但跨地區或跨專案的函式可能會共用相同名稱。
指定區域的最佳做法
根據預設,函式會在 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) 和新函式的網址。如果您的用戶端無法妥善處理重新導向,您可以透過從原始函式啟動至新函式的新要求,代理從原始函式到新函式的要求。最後一步是確保所有用戶端都會呼叫新函式。
可呼叫函式的用戶端位置選項
就可呼叫的函式而言,用戶端可呼叫設定應遵循與 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");
背景函式
背景函式採用至少一次事件傳遞語意,這表示在某些情況下,背景函式可能會收到重複的事件。因此,您應實作冪等的函式。如果函式已經是冪等的,則您可以使用相同的事件觸發條件,在新區域中重新部署函式,並在確認新函式正確接收流量之後移除舊函式。在這個轉換期間,兩個函式都會接收事件。如要瞭解變更函式區域的建議指令順序,請參閱「變更函式區域」一文。
如果您的函式目前並非冪等,或其冪等未延伸到地區之外,則我們建議您先實作冪等,再移動函式。
最佳區域建議會因事件觸發條件類型而異:
觸發條件類型 | 地區建議 |
---|---|
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 |