Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

雲功能位置

雲功能是區域性的 ,這意味著運行您的雲功能的基礎架構位於特定區域,並且由Google管理,以在這些區域內的所有區域中冗餘地使用。

選擇要在其中運行功能的區域時,主要考慮因素應該是延遲和可用性。通常,您可以選擇靠近用戶的區域,但也應考慮應用程序使用的其他產品和服務的位置。在多個地區使用服務可能會影響您應用的延遲以及定價

Cloud Functions在以下地區提供1級定價

  • us-central1 (愛荷華州)
  • us-east1 (南卡羅來納州)
  • us-east4 (北弗吉尼亞)
  • europe-west1 (比利時)
  • europe-west2 (倫敦)
  • asia-east2 (香港)
  • asia-northeast1 (東京)
  • asia-northeast2 (大阪)

雲端功能可在以下地區使用Tier 2定價

  • us-west2 (洛杉磯)
  • us-west3 (鹽湖城)
  • us-west4 (拉斯維加斯)
  • europe-west3 (法蘭克福)
  • europe-west6 (蘇黎世)
  • northamerica-northeast1 (蒙特利爾)
  • southamerica-east1 (聖保羅)
  • australia-southeast1 (悉尼)
  • asia-south1 (孟買)
  • asia-southeast2 (雅加達)
  • asia-northeast3 (首爾)

給定項目中給定區域中的功能必須具有唯一的(不區分大小寫)名稱,但是跨區域或項目中的功能可以共享相同的名稱。

變更區域的最佳做法

默認情況下,函數在us-central1區域中運行。請注意,這可能與事件源(例如存儲桶)的區域不同。如果您需要更改函數運行的區域,請針對每個函數觸發器類型遵循本節中的建議。

要設置函數運行的region ,請在函數定義中設置region參數,如下所示:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

您可以通過在functions.region()傳遞多個逗號分隔的區域字符串來指定多個區域。有關建議的步驟的更多信息,請參見更改功能區域

HTTP和客戶端可調用功能

對於HTTP和可調用函數,建議您首先將函數設置到目標區域,或者將其設置為最接近大多數預期客戶所在的區域,然後更改原始函數以將其HTTP請求重定向到新函數(它們可以具有相同的功能)名稱)。如果HTTP函數的客戶端支持重定向,則只需更改原始函數即可返回HTTP重定向狀態(301)以及新函數的URL。如果您的客戶不能很好地處理重定向,則可以通過啟動從原始功能到新功能的新請求,將請求從原始功能代理到新功能。最後一步是確保所有客戶端都在調用新功能。

用於可調用功能的客戶端位置選擇

關於可調用功能,客戶端可調用設置應遵循與HTTP功能相同的準則。客戶端還可以指定區域,並且如果函數在us-central1以外的任何區域中運行,則必須指定該區域。

要在客戶端上設置區域,請在初始化時指定所需的區域:

迅速

lazy var functions = Functions.functions(region:"us-central1")

目標C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"us-central1"];

網頁


var functions = firebase.app().functions('us-central1');

安卓系統

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("us-central1");

C ++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("us-central1");

統一

第818章

後台功能

後台函數採用至少一次的事件傳遞語義,這意味著在某些情況下,它們可能會收到重複的事件。因此,您應該實現功能是冪等的 。如果您的功能已經冪等,則可以在驗證新功能正確接收流量之後,使用相同的事件觸發器在新區域中重新部署該功能,並刪除舊功能。在此過渡期間,兩個功能都將接收事件。有關建議的命令序列,請參見更改功能區域 ,以更改功能區域。

如果您的函數當前不是冪等的,或者它的冪等性沒有超出該區域,那麼我們建議您在移動該函數之前先實現冪等性。

最佳區域建議因事件觸發類型而異:

觸發類型區域推薦
Cloud Firestore 距離Cloud Firestore實例位置最近的區域(請參閱下一部分)
實時數據庫永遠是us-central1
存儲到存儲桶位置最近的區域(請參閱下一部分)
其他如果要與該函數內部的實時數據庫實例,Cloud Firestore實例或存儲桶進行交互,則建議區域與這些資源之一觸發的函數相同。否則,請使用us-central1的默認區域。還要注意,連接到Firebase Hosting的功能必須位於us-central1

根據Cloud Firestore和存儲位置選擇區域

功能的可用區域並不總是與Cloud Firestore數據庫和Cloud Storage存儲桶的可用區域精確匹配。

請注意,如果您的功能和資源(數據庫實例或存儲桶)位於不同的位置,則可能會增加延遲和計費成本

對於支持相同區域的情況,以下是Cloud Firestore和Cloud Storage支持的功能最近的區域的映射:

Cloud Firestore和存儲的區域/多區域功能最近的區域
nam5us-central (多區域) us-central1
eur3europe-west (多區域) europe-west1
asia-south1 (孟買) asia-east2