'How can I specify the region of a Google Cloud Function?
I'm currently using Google Cloud Function to build up my restful API. However, I've found that it's slow because the my Google-Cloud-Function server is on "us-central", whereas my service is in Asia.
I tried to change the default region of my Google Project to "asia-west-1" and restart the cloud function—I followed the steps outlined here—but, unfortunately, it's still in "us-central". How can I change the function's region ?
Solution 1:[1]
No such region as "asia-west-1"
There is no such region as "asia-west-1" on the Google Cloud Platform. At the time of writing, GCP provides the following regions in Asia:
asia-east1
asia-northeast1
asia-south1
asia-southeast1
However, asia-northeast1
is currently the only GCP region in Asia available for Google Cloud Functions:
$ 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
How to specify the region of a Google Cloud Function
Using Google Cloud Console
The region setting is easy to miss. It's actually hidden behind an accordion entitled "More":
Clicking on it reveals a Region dropdown (among other advanced settings):
Using gcloud
Simply specify one of the four available regions using the --region
flag.
Minimal working example
Under the assumption that you have
$ tree .
.
??? index.js
0 directories, 1 file
$ cat index.js
exports.hello = (req, res) => {
res.send(`Hello World!`);
}
then running
gcloud functions deploy hello --region asia-northeast1 --trigger-http
should deploy function hello
to region asia-northeast1
:
Solution 2:[2]
It seems that Google Cloud Functions are currently available only in region us-central1. If I go to "Create function" (https://console.cloud.google.com/functions/add), the Region dropdown has only one choice, and it's us-central1.
Solution 3:[3]
If you are using the Firebase SDK:
Taken from the documentation - https://firebase.google.com/docs/functions/manage-functions#modify
// 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");
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Rohan Jayasekera |
Solution 3 | robsiemb |