Cloud Functions 函数位置

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

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

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

  • us-central1(爱荷华)
  • us-east1(南卡罗来纳)
  • us-east4(北弗吉尼亚)
  • europe-west1(比利时)
  • europe-west2(伦敦)
  • asia-east2(香港)
  • asia-northeast1(东京)
  • asia-northeast2(大阪)

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

  • europe-west3(法兰克福)
  • europe-west6(苏黎世)
  • us-west3(盐湖城)
  • northamerica-northeast1(蒙特利尔)
  • australia-southeast1(悉尼)
  • us-west2(洛杉矶)
  • us-west4(拉斯维加斯)
  • southamerica-east1(圣保罗)
  • asia-south1(孟买)
  • asia-southeast2(雅加达)
  • asia-northeast3(首尔)

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

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

请注意,您可以使用 Cloud Functions API 中的 project.locations/list 方法以编程方式检索最新的位置集。

选择区域

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

gcloud

如果您使用的是 gcloud 命令行工具,则可以使用 --region 标志指定区域。例如:

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

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

在上述示例中,FLAGS... 是指在部署函数期间传递的其他参数。如需查看 deploy 命令的完整参考信息,请参阅 gcloud functions deploy

控制台

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

  1. 在 Cloud Console 中,转到 Cloud Functions 概览页面。

    转到 Cloud Functions 概览页面

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

  2. 点击创建函数

  3. 展开更多菜单。

  4. 区域下,选择您的区域。

设置默认区域

您可以使用 gcloud 命令行工具设置默认区域,如下所示:

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) 以及新函数的网址即可。如果您的客户端无法很好地处理重定向,则您可以从原始函数发起指向新函数的新请求,以便将请求从原始函数(代理)转发到新函数。最后一步是确保所有客户端都调用新函数。

后台函数

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

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