Предыдущая учетная запись службы GCP использовалась при развертывании функций Firebase, несмотря на передачу обновленной информации учетной записи службы в admin.initializeApp

Я переключаю свои функции Firebase с одной учетной записи Firebase на другую. Я повторил firebase init. Я добавил в проект новые конфигурации учетных записей служб и передаю их admin.initializeApp. Я вошел в GCP через свой интерфейс командной строки и тоже запустил firebase login:ci.

Несмотря на все это, всякий раз, когда я пытаюсь запустить firebase deploy, я получаю ошибку:

Отсутствуют разрешения, необходимые для развертывания функций. У вас должно быть разрешение iam.serviceAccounts.ActAs на сервисный аккаунт @ appspot.gserviceaccount.com.

Есть идеи, что здесь происходит?




Ответы (2)


Это не имеет ничего общего с учетной записью службы, которую вы используете для инициализации Firebase Admin SDK. Ошибка связана с отсутствием разрешения учетной записи Google, которую вы использовали для входа с помощью интерфейса командной строки Firebase. У него нет разрешения на развертывание в облачных функциях. Вам следует либо выйти, а затем снова войти в систему с учетной записью, имеющей разрешение (обычно с ролью редактора), либо добавить соответствующее разрешение в учетную запись, которую вы хотите использовать.

person Doug Stevenson    schedule 06.09.2020
comment
Спасибо за ответ, но у меня есть роль администратора с учетной записью, с которой я вошел в интерфейс командной строки Firebase, и я все еще получаю эту ошибку. Каким-то образом мои функции Firebase ссылаются на старую учетную запись службы, и я не уверен, где и как ее изменить. - person Kenzo; 06.09.2020
comment
Я действительно не думаю, что это имеет какое-либо отношение к учетной записи службы, которую вы используете для init. Сообщение ясно, что отсутствует разрешение для развертывания, и даже сообщает вам, какое конкретное разрешение отсутствует. Код еще даже не запущен. - person Doug Stevenson; 06.09.2020
comment
Сообщение об ошибке ссылается на serviceAccount A. Это была старая учетная запись, с которой я работал. Я удалил все ссылки на serviceAccount A при переходе на serviceAccount B. И все же он по-прежнему ссылается на serviceAccount A. Возможно, это не имеет ничего общего с учетной записью, используемой для init. Я просто хочу знать, как указать в моем проекте новую учетную запись службы вместо старой. Спасибо за помощь. - person Kenzo; 06.09.2020
comment
Вам нужно будет дважды проверить разрешения для учетной записи, которую вы использовали для входа с помощью интерфейса командной строки Firebase, и убедиться, что она имеет указанные разрешения. - person Doug Stevenson; 06.09.2020
comment
ты спас мне день - person roun paleum; 01.06.2021

Если вы переходите на новый проект / учетную запись Firebase, вы должны удалить существующие файлы проекта .firebaserc и firebase.json перед запуском firebase init - это гарантирует, что вы используете обновленные конфигурации проекта.

person Kenzo    schedule 06.09.2020