Cloud Functions 位置

Cloud Functions 具有「地區性」,這表示執行函式的基礎架構位於特定地區,並由 Google 代管,可為這些地區內的所有區域提供備援功能。

選取要執行函式的區域時,主要考量因素應為延遲和可用性。一般而言,您可以選擇靠近使用者的地區,但也應該考慮應用程式使用的其他產品和服務所處的位置。如果跨多個區域使用服務,可能會影響應用程式的延遲時間和定價

根據預設,函式會在 us-central1 區域中執行。請注意,這可能與事件來源 (例如 Cloud Storage 值區) 的區域不同。如要瞭解如何指定函式執行的區域,請參閱本頁後續內容。

支援的地區

在本節的清單中, energy_savings_leaf 圖示表示該地區的電力是以低碳排放量的方式產生。詳情請參閱「Google Cloud 區域無碳能源」。

第 1 級定價

Cloud Functions 適用於下列區域,並採用級別 1 定價

區域 位置 支援的產品版本 二氧化碳排放量
africa-south1 約翰尼斯堡 僅限第 2 代
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 Realtime Database 執行個體相同的區域
Cloud Storage 最接近 Cloud Storage bucket 位置的區域 (請參閱下一節)
其他 如果您與函式中的 Realtime Database 例項、Cloud Firestore 例項或 Cloud Storage 值區互動,建議您使用與函式觸發資源相同的區域。否則,請使用預設區域 us-central1。 連結至 Firebase Hosting 的函式可以位於任何區域,但請參閱無伺服器主機代管總覽,瞭解相關建議。

根據 Cloud FirestoreCloud Storage 位置選取區域

函式可用的區域不一定與 Cloud Firestore資料庫和 Cloud Storage儲存空間可用的區域完全一致。

請注意,如果函式和資源 (資料庫執行個體或Cloud Storage值區) 位於不同位置,延遲時間和帳單費用可能會增加。

如果 Cloud FirestoreCloud Storage 不支援相同區域,以下是支援這些函式的最接近區域對應:

Cloud FirestoreCloud Storage 的區域/多區域 函式最接近的區域
nam5us-central (多區域) us-central1
eur3europe-west (多區域) europe-west1
europe-west4 (荷蘭) europe-west1
asia-south1 (孟買) asia-east2
asia-south2 (德里) asia-east2
australia-southeast2 (墨爾本) australia-southeast1