Развернуть запланированную функцию в Firebase Functions

Как я могу развернуть запланированную функцию в Google Firebase Functions?

Я создал учетную запись службы с именем

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.

Могу развернуть другие функции, которые не запланированы на "европа-запад1". Я думаю, что мой проект находится в европе-западе1 (как я могу проверить?)

Я также попытался создать функцию с именем notification_email, расположенную в europe-west1, непосредственно из веб-интерфейса GCP Cloud Functions, а затем развернуть мою функцию - перезаписав ее - с тем же результатом.

Я также пробовал установить регион, используя

gcloud config set functions / регион европа-запад1

как указано в документации, с тем же результатом.

Мой список конфигураций $ gclod

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

Пожалуйста, помогите мне здесь! :)


person Kermit    schedule 28.09.2019    source источник
comment
какую версию cli вы используете?   -  person andresmijares    schedule 01.10.2019
comment
Привет, @andresmijares! Я использую версию 7.2.2 интерфейса командной строки Firebase.   -  person Kermit    schedule 03.10.2019
comment
У меня была аналогичная проблема несколько месяцев назад, мне пришлось понизить версию интерфейса командной строки до 7.2.0, возможно, это сработает для вас   -  person andresmijares    schedule 03.10.2019
comment
Привет, @andresmijares! Я не пробовал перейти на более раннюю версию, но обновился до версии 7.4.4, и у меня такая же проблема. Google указал, что проблема может быть связана с публикацией функции планировщика. Я обновлю сообщение, когда у меня будет больше информации.   -  person Kermit    schedule 05.10.2019


Ответы (1)


Когда вы используете запланированные функции в Firebase Functions, создается экземпляр App Engine, необходимый для работы Cloud Scheduler. Вы можете прочитать об этом здесь.

Когда эти ресурсы запускаются для работы планировщика, они используют расположение, заданное по умолчанию для ресурсов.

Облачные функции для Firebase (только запланированные функции) - если вы запускаете запланированные функции, для 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, вы увидите, где расположены ваши ресурсы.

Надеюсь это поможет.

person Stefan G.    schedule 14.10.2019
comment
в этой части исправлена ​​проблема: если вы нажмете на шестеренку рядом с обзором проекта в Firebase, вы увидите, где расположены ваши ресурсы. Затем я установил регион по умолчанию, такой же, как регион функции планировщика. Большое спасибо @ stefan-g - person p4309027; 17.05.2021