Cloud Functions 位置
Cloud Functions 函数是区域级的,这意味着运行您的 Cloud Functions 函数的基础架构位于特定区域中并由 Google 托管,在该区域内的所有可用区以冗余方式提供。
选择在哪个区域中运行您的 Cloud Functions 时,应主要考虑延迟和可用性。通常,您可以选择离您的 Cloud Functions 函数用户最近的区域,但除此之外,您还应该考虑应用使用的其他 Google Cloud 产品和服务的位置。跨多个位置使用服务可能会影响应用的延迟时间和价格。
层级 1 价格
Cloud Functions 函数在采用层级 1 价格的以下区域提供:
us-west1
(俄勒冈)二氧化碳排放量低
us-central1
(爱荷华)二氧化碳排放量低
us-east1
(南卡罗来纳)us-east4
(北弗吉尼亚)europe-west1
(比利时)二氧化碳排放量低
europe-west2
(伦敦)asia-east1
(台湾)asia-east2
(香港)asia-northeast1
(东京)asia-northeast2
(大阪)
层级 2 价格
Cloud Functions 函数在采用层级 2 价格的以下区域提供:
us-west2
(洛杉矶)us-west3
(盐湖城)us-west4
(拉斯维加斯)northamerica-northeast1
(蒙特利尔)二氧化碳排放量低
southamerica-east1
(圣保罗)二氧化碳排放量低
europe-west3
(法兰克福)europe-west6
(苏黎世)二氧化碳排放量低
europe-central2
(华沙)australia-southeast1
(悉尼)asia-south1
(孟买)asia-southeast1
(新加坡)asia-southeast2
(雅加达)asia-northeast3
(首尔)
您可以将函数部署到项目中的不同区域,但是一旦为函数选择了区域,就无法再进行更改。
给定项目中的函数名称在给定区域内必须独一无二(不区分大小写),但不同区域或不同项目的函数可以重名。
请注意,您可以使用 Cloud Functions API 中的 project.locations/list 方法以编程方式检索最新的位置集。
选择区域
您可以在部署期间为函数选择区域。
gcloud
如果您在使用 Google Cloud CLI,则可以使用 --region
标志指定区域。例如:
gcloud functions deploy FUNCTION_NAME --region REGION FLAGS...
其中,REGION
是上面列出的一个区域。
在上述示例中,FLAGS...
是指在部署函数期间传递的其他参数。如需查看 deploy
命令的完整参考信息,请参阅 gcloud functions deploy
。
控制台
如果您使用的是 Cloud Console,则可以在创建和部署函数时选择区域。
在 Cloud Console 中,转到 Cloud Functions 概览页面。
请务必选择启用了 Cloud Functions 的项目。
点击创建函数。
展开更多菜单。
在区域下,选择您的区域。
设置默认区域
您可以使用 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
) 以及新函数的网址即可。如果您的客户端无法很好地处理重定向,则您可以从原始函数发起指向新函数的新请求,以便将请求从原始函数(代理)转发到新函数。最后一步是确保所有客户端都调用新函数。
事件驱动的函数
事件驱动的函数采用“至少传送一次事件”语义,这意味着在某些情况下它们可能会收到重复事件,因此在实现此类函数时应始终遵循幂等原则。如果您的函数已遵循幂等原则,那么您只需采用相同的事件触发器在新区域中重新部署该函数,并在验证新函数能正确接收流量后移除旧函数。在此过渡期间,两个函数都将收到事件。
如果您的函数目前不遵循幂等原则,或者它的幂等性只在其所在区域内有效,我们建议您在移动该函数之前先实现幂等性。