我目前正在使用Google Cloud Function构建我的RESTful API。但是,我发现它很慢,因为我的Google Cloud Function服务器位于“us-central”,而我的服务在亚洲。
我尝试将我的Google项目的默认区域更改为“asia-west-1”,并重新启动云函数 - 我按照此处概述的步骤进行操作 - 但不幸的是,它仍然在“us-central”。
如何更改函数的区域?
我目前正在使用Google Cloud Function构建我的RESTful API。但是,我发现它很慢,因为我的Google Cloud Function服务器位于“us-central”,而我的服务在亚洲。
我尝试将我的Google项目的默认区域更改为“asia-west-1”,并重新启动云函数 - 我按照此处概述的步骤进行操作 - 但不幸的是,它仍然在“us-central”。
如何更改函数的区域?
在Google Cloud Platform上,没有名为"asia-west-1"的区域。截至撰写本文时,GCP在亚洲提供以下区域:
asia-east1
asia-northeast1
asia-south1
asia-southeast1
然而,目前只有asia-northeast1
是可用于Google Cloud Functions的GCP亚洲区域。
$ gcloud functions regions list
NAME
projects/xxxxxxxx/locations/europe-west1
projects/xxxxxxxx/locations/us-east1
projects/xxxxxxxx/locations/us-central1
projects/xxxxxxxx/locations/asia-northeast1
区域设置很容易被忽略。它实际上隐藏在一个名为“更多”的手风琴后面:
点击它会显示一个“区域”下拉菜单(以及其他高级设置):
gcloud
只需使用--region
标志之一指定四个可用区域之一。
在假设您具有的情况下:
$ tree .
.
└── index.js
0 directories, 1 file
$ cat index.js
exports.hello = (req, res) => {
res.send(`Hello World!`);
}
gcloud functions deploy hello --region asia-northeast1 --trigger-http
应该将函数hello
部署到区域asia-northeast1
:
看起来谷歌云函数目前仅在us-central1地区可用。如果我去“创建函数” (https://console.cloud.google.com/functions/add),区域下拉菜单只有一个选项,就是us-central1。
// before
const functions = require('firebase-functions');
exports.webhook = functions
.https.onRequest((req, res) => {
res.send("Hello");
});
// after
const functions = require('firebase-functions');
exports.webhookAsia = functions
.region('asia-northeast1')
.https.onRequest((req, res) => {
res.send("Hello");
});
学习编程的时候要注意,如果你没有明确为函数定义区域,它会将区域设置为us-central1
,即使你的Firestore和Firebase项目已经设置为使用另一个区域:
export const notifyUsers =
functions.firestore.document("tasks/{docId}").onUpdate(
export const notifyUsers =
functions.region('europe-west1').firestore.document("tasks/{docId}").onUpdate(
部署后,您可以检查 Firebase 控制台的“函数”选项卡,以查看您的函数名称现在显示的更新区域。如果在部署过程中被问及是否删除旧区域值的问题并选择了“是”,则现在可以删除这些函数。