Cloud Functions 位置

Cloud Functions 為「區域性」,也就是說,執行應用程式的基礎架構 位於特定區域,並由 Google 管理 可在多個可用區中備援 「各個區域中的所有可用區」

選取要執行函式的區域時,您的主要 考慮因素包括延遲時間和可用性你可以 通常選取使用者附近的區域 也應考量 其他產品和服務 應用程式使用的架構在多個區域使用服務可能會影響 查看延遲時間與定價

根據預設,函式會在 us-central1 區域執行。請注意 例如 Cloud Storage 值區等事件來源所在區域 瞭解詳情 指定函式的執行區域

支援的地區

在本章節的清單中, power_savings_leaf 圖示表示此區域的電力是由 低碳排放若需更多資訊,請參閲 Google Cloud 區域的無碳能源

Cloud Functions 適用於以下具備 級別 1 定價

  • asia-east1 (台灣)
  • asia-east2 (香港) 僅限第 1 代
  • asia-northeast1 (東京)
  • asia-northeast2 (大阪)
  • europe-north1 (芬蘭) power_savings_leaf 僅限第 2 代
  • europe-west1 (比利時) power_savings_leaf
  • europe-west2 (倫敦) 僅限第 1 代
  • us-central1 (愛荷華州) power_savings_leaf
  • us-east1 (南卡羅來納州)
  • us-east4 (北維吉尼亞州)
  • us-west1 (奧勒岡州) power_savings_leaf

Cloud Functions 適用於以下具備 級別 2 定價

  • asia-east2 (香港) 第 2 代
  • asia-northeast3 (首爾)
  • asia-southeast1 (新加坡)
  • asia-southeast2 (雅加達)
  • asia-south1 (孟買) 僅限第 2 代
  • australia-southeast1 (雪梨)
  • australia-southeast2 (僅限墨爾本) 第 2 代
  • europe-central2 (華沙)
  • 僅限 europe-west2 (倫敦) 第 2 代
  • europe-west3 (法蘭克福)
  • europe-west6 (蘇黎世) power_savings_leaf
  • northamerica-northeast1 (蒙特婁) power_savings_leaf
  • northamerica-northeast2 (多倫多) power_savings_leaf 僅限第 2 代
  • southamerica-east1 (聖保羅) power_savings_leaf
  • southamerica-west1 (僅限智利、智利) 第 2 代
  • 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 函式用戶端支援 只需變更原始函式,即可傳回 重新導向狀態 (301),以及新函式的網址。如果客戶 無法有效處理重新導向,您可以透過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");

背景函式

背景函式採用至少一次的事件傳遞語意, 在某些情況下,可能會收到重複的事件。因此, 導入函式 冪等。如果您的函式 已是冪等的,則您可以在新的區域中,以 使用相同的事件觸發條件,並在您確認 新函式正確接收流量。在此過渡期間, 函式會收到事件。詳情請見 變更函式的區域 ,瞭解變更函式區域的建議序列。

如果您的函式目前並非冪等,或其冪等未延伸到地區之外,則我們建議您先實作冪等,再移動函式。

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

觸發條件類型 區域建議
Cloud Firestore 最靠近 Cloud Firestore 執行個體位置的區域 (請參閱下一節)
即時資料庫 一律為 us-central1
Cloud Storage 最靠近 Cloud Storage 值區位置的區域 (請參閱下一節)
其他 如要與即時資料庫執行個體 (即 Cloud Firestore) 互動 或是函式內的 Cloud Storage 值區 區域就是您在其中一個區域 再複習一下,機構節點 是所有 Google Cloud Platform 資源的根節點否則,請使用 us-central1 的預設區域。 已連線至 Firebase 託管的函式皆可位於任何區域,但 瞭解如何取得建議。

根據 Cloud Firestore 和 Cloud Storage 位置選取區域

函式的可用區域與 Cloud Firestore 資料庫和 Cloud Storage 的可用區域 Cloud Storage 也提供目錄同步處理功能 方便您同步處理 VM 目錄與值區

請注意,如果您的函式和資源 (資料庫執行個體或 Cloud Storage) 多個不同位置的資料 延遲時間變長 帳單費用

下表為 Cloud Firestore 中最近支援函式支援的區域 和 Cloud Storage 搭配使用,以「不」支援同一區域的情況:

Cloud Firestore 和 Cloud 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