Cloud Functions 位置

Cloud Functions 是区域级的,这意味着运行 Cloud Functions 函数的基础架构位于特定区域,由 Google 托管,以便在该区域内的所有可用区以冗余方式提供。

选择在其中运行 Cloud Functions 函数的区域时,应主要考虑延迟和可用性。通常,您可以选择离您的 Cloud Functions 函数用户最近的区域,但您还应考虑应用使用的其他 Google Cloud 产品和服务的位置。跨多个位置使用服务可能会影响应用的延迟时间和价格

下面列出了 Cloud Functions 的可用区域。不同的 Cloud Functions 版本具有不同的区域可用性 - 请参阅表中的“支持的产品版本”列。

层级 1 价格

Cloud Functions 函数在采用层级 1 价格的以下区域提供:

区域 位置 支持的产品版本 二氧化碳排放量
asia-east1 中国台湾 第 1 代、第 2 代
asia-east2 香港 第 1 代、第 2 代
asia-northeast1 东京 第 1 代、第 2 代
asia-northeast2 大阪 第 1 代、第 2 代
europe-north1 芬兰 第 2 代 叶形图标 二氧化碳排放量低
europe-west1 比利时 第 1 代、第 2 代 叶形图标 二氧化碳排放量低
europe-west2 伦敦 第 1 代、第 2 代
europe-west4 荷兰 第 2 代
us-central1 爱荷华 第 1 代、第 2 代 叶形图标 二氧化碳排放量低
us-east1 南卡罗来纳 第 1 代、第 2 代
us-east4 北弗吉尼亚 第 1 代、第 2 代
us-west1 俄勒冈 第 1 代、第 2 代 叶形图标 二氧化碳排放量低

层级 2 价格

Cloud Functions 可在采用层级 1 价格的以下地区使用:

区域 位置 支持的产品版本 二氧化碳排放量
asia-northeast3 首尔 第 1 代、第 2 代
asia-southeast1 新加坡 第 1 代、第 2 代
asia-southeast2 雅加达 第 1 代、第 2 代
asia-south1 孟买 第 1 代、第 2 代
australia-southeast1 悉尼 第 1 代、第 2 代
europe-central2 华沙 第 1 代、第 2 代
europe-west3 法兰克福 第 1 代、第 2 代
europe-west6 苏黎世 第 1 代、第 2 代 叶形图标 二氧化碳排放量低
northamerica-northeast1 蒙特利尔 第 1 代、第 2 代 叶形图标 二氧化碳排放量低
southamerica-east1 圣保罗 第 1 代、第 2 代 叶形图标 二氧化碳排放量低
us-west2 洛杉矶 第 1 代、第 2 代
us-west3 盐湖城 第 1 代、第 2 代
us-west4 拉斯维加斯 第 1 代、第 2 代

选择区域

您可以在部署期间为函数选择区域。

gcloud

如果您在使用 Google Cloud CLI,则可以使用 --region 标志指定区域。

gcloud functions deploy FUNCTION_NAME --region=REGION ...

其中,REGION 是上面列出的一个区域。

控制台

如果您使用的是控制台,则可以在创建和部署函数时选择区域。

  1. 在控制台中,打开 Cloud Functions“概览”页面。

    打开 Cloud Functions 概览页面

    请务必选择启用了 Cloud Functions 的项目。

  2. 点击创建函数

  3. 区域字段中,选择一个区域。

您可以将函数部署到项目中的不同区域,但是一旦为函数选择了区域,就无法再进行更改。

给定项目中的函数的名称在给定区域内必须独一无二(区分大小写),但不同区域或不同项目的函数可以重名。

设置默认区域

您可以使用 Google Cloud CLI 设置默认区域,方法如下:

gcloud config set functions/region REGION

例如:

gcloud config set functions/region europe-west1

数据驻留

Cloud Functions 在函数执行范围(范围 A 合规性 - 函数执行)内提供数据驻留保证,其中给定函数为函数调用/执行提供数据驻留。

这种合规性适用于 HTTP 函数和事件驱动的函数。对于事件驱动的函数,从上游产品(触发产品)将事件传递到 Cloud Functions 开始,Cloud Functions 就是符合数据驻留要求的。因此,请务必确保上游产品(例如 Cloud Storage 或 Pub/Sub)本身符合数据驻留的要求。

更改区域的最佳做法

如果您需要更改函数的部署区域,请遵循以下建议。

HTTP 函数

对于 HTTP 函数,我们建议您首先将 HTTP 函数重新部署到目标区域(可以使用相同名称),然后更改原始函数以将其 HTTP 请求重定向到新函数。如果 HTTP 函数的客户端支持重定向,那么您只需更改原始函数,使其返回 HTTP 重定向状态 (301) 以及新函数的网址即可。如果您的客户端无法很好地处理重定向,则您可以从原始函数发起指向新函数的新请求,以便将请求从原始函数(代理)转发到新函数。最后一步是确保所有客户端都调用新函数。

事件驱动的函数

事件驱动的函数采用“至少传送一次事件”语义,这意味着在某些情况下它们可能会收到重复事件,因此在实现此类函数时应始终遵循幂等原则。如果您的函数已遵循幂等原则,那么您只需采用相同的事件触发器在新区域中重新部署该函数,并在验证新函数能正确接收流量后移除旧函数。在此过渡期间,两个函数都将收到事件。

如果您的函数目前不遵循幂等原则,或者它的幂等性只在其所在区域内有效,我们建议您在移动该函数之前先实现幂等性。