如何将预定功能部署到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 的函数,然后以相同的结果部署我的函数-覆盖它。
我还尝试使用
设置区域如documentation中所述的gcloud配置设置功能/区域Europe-west1
,结果相同。
我的$ gclod配置列表
[core]
account = myAccount
disable_usage_reporting = True
project = myProject
[functions]
region = europe-west1
请在这里帮助我! :)
答案 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资源位置后,您将无法对其进行更改。
如果您在Firebase中单击项目概述旁边的齿轮,则可以看到资源的位置。
希望这会有所帮助。