firebase部署到自定义区域(eu-central1)

时间:2017-04-23 09:48:43

标签: firebase google-cloud-functions

有没有办法指定部署我的firebase功能的区域/区域。

实际上我在文档中没有发现任何相关内容,我的功能总是部署到我们中心1但是我希望在eu-central1上有...

是否可以在Firebase中进行设置 - 配置 - 文件?

{
  "database": {
    "rules": "database.rules.json"
  },
  "hosting": {
    "public": "public",
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

我也看过cli选项,但我没有找到任何东西。

Firebase项目本身已正确设置为欧洲区域o.O

提前致谢

5 个答案:

答案 0 :(得分:21)

firebaser here

更新(2018-07-25):

现在可以在Firebase中为您的云功能指定区域,在代码中指定该区域并部署更改。 E.g:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

有关详细信息,请参阅Firebase documentation on Cloud Functions locations(我从上面获取上述代码段)和modifying the region of a deployed function

答案 1 :(得分:9)

来自文档:https://firebase.google.com/docs/functions/locations

现在在以下地区可用:

  • us-central1(爱荷华州)
  • us-east1(南卡罗来纳州)
  • europe-west1(比利时)
  • asia-northeast1(东京)

更改区域的最佳做法

// before
const functions = require('firebase-functions');

exports.webhook = functions
    .https.onRequest((req, res) => {
            res.send("Hello");
    });

// after
const functions = require('firebase-functions');

exports.webhookEurope = functions
    .region('europe-west1')
    .https.onRequest((req, res) => {
            res.send("Hello");
    });

答案 2 :(得分:5)

要对所有功能使用相同的自定义区域,请执行以下操作。

import * as functions from 'firebase-functions';

const regionalFunctions = functions.region('europe-west1');

export const helloWorld = regionalFunctions.https.onRequest((request, response) => {
 response.send("Hello from Firebase!");
});

export const helloWorld2 = regionalFunctions.https.onRequest((request, response) => {
 response.send("Hello from Firebase 2!");
});

答案 3 :(得分:0)

要将Firebase功能部署到某个区域也可以在本地仿真中运行,必须这样初始化客户端:

const functions = LOCAL ? firebase.app().functions(/*functionsRegion*/) :  
  firebase.app().functions(functionsRegion);

const fun = functions.httpsCallable('your_function_name');

即代码不相同。在模拟情况下添加区域会使呼叫丢失,而不会出现错误。

LOCAL是我已经知道的客户端值,无论后端是在云中运行还是设置为本地仿真。

当然,这是Firebase可以解决的一个极端情况吗?

firebase-tools 8.6.0,firebase 7.16.1

答案 4 :(得分:0)

"rewrites": [
  {
    "source": "**",
    "run": {
      "serviceId": "<service id>",
      "region": "europe-west1"
    }
  }
]
},