将预定功能部署到Firebase功能

时间:2019-09-28 14:49:11

标签: firebase firebase-realtime-database google-cloud-pubsub

如何将预定功能部署到Google Firebase功能?

我已创建一个名为的服务帐户

  

cron通知

我的函数代码

exports.notification_email = functions
.region('europe-west1')
.pubsub
.schedule('0 * * * *')
.timeZone('Europe/Stockholm')
.onRun(async (event) => { ... }

当我尝试使用

进行部署时
$ firebase deploy --only functions:notification_email 

我收到以下错误。

  

错误:HTTP错误:400,位置必须等于europe-west1,因为与此项目相关联的App Engine应用程序位于europe-west1

我可以部署其他未安排在“ europe-west1”上的功能。我认为我的项目在europe-west1(如何验证?)

我还尝试直接从GCP Cloud Functions Web UI创建位于europe-west1中的名为 notification_email 的函数,然后以相同的结果部署我的函数-覆盖它。

我还尝试使用

设置区域
  

gcloud配置设置功能/区域Europe-west1

documentation中所述的

,结果相同。

我的$ gclod配置列表

[core]
account = myAccount
disable_usage_reporting = True
project = myProject
[functions]
region = europe-west1

请在这里帮助我! :)

1 个答案:

答案 0 :(得分:0)

在Firebase Functions中使用计划的函数时,将创建一个App Engine实例,Cloud Scheduler才能正常运行。您可以阅读有关here的信息。

启动这些资源以使调度程序工作时,它们将使用默认情况下为资源设置的位置。

  

用于Firebase的Cloud Functions(仅限计划功能)—如果运行计划功能,则Cloud Scheduler需要Google App Engine应用;在设置过程中,系统会提示您选择项目的默认Google Cloud Platform(GCP)资源位置(如果在设置其他服务时尚未选择)。

我认为您会收到该错误,因为您指定的默认GCP资源位置与功能一之间存在差异。

更多背景:

  

重要提示:Cloud Scheduler要求您的项目具有Google App Engine(GAE)应用;在安装过程中,系统会提示您选择项目的默认Google Cloud Platform(GCP)资源位置。此位置将用于项目中需要位置设置的GCP服务,特别是默认的Cloud Storage存储桶和Cloud Firestore数据库。   在设置项目的默认GCP资源位置时,首先要考虑要在何处存储数据和文件,其次要考虑在何处运行Cloud Firestore和Cloud Storage的任何触发功能。设置项目的默认GCP资源位置后,您将无法对其进行更改。

Link

如果您在Firebase中单击项目概述旁边的齿轮,则可以看到资源的位置。

希望这会有所帮助。