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_leafeurope-west2
(倫敦) 僅限第 1 代us-central1
(愛荷華州) power_savings_leafus-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_leafnorthamerica-northeast1
(蒙特婁) power_savings_leafnorthamerica-northeast2
(多倫多) power_savings_leaf 僅限第 2 代southamerica-east1
(聖保羅) power_savings_leafsouthamerica-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 Storage 位置選取區域
函式的可用區域與 Cloud Firestore 資料庫和 Cloud Storage 的可用區域 Cloud Storage 也提供目錄同步處理功能 方便您同步處理 VM 目錄與值區
請注意,如果您的函式和資源 (資料庫執行個體或 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 |