#node.js #firebase #express #google-cloud-platform #google-compute-engine
# #node.js #firebase #экспресс #google-облачная платформа #google-compute-engine
Вопрос:
кто-нибудь знает, как мне дать разрешение из моего проекта в GCP на функцию, созданную и развернутую в firebase? Потому что то, что я делаю, заключается в следующем:
- С сайта (развернутого также в firebase) y вызов серверной части (функция Firebase)
- Сама функция пытается получить ресурсы из моего проекта GCP (в зависимости от того, какие экземпляры запущены в данный момент)
- Затем я получаю их и показываю на лицевой стороне.
Шаг 2 вызывает мои проблемы, в настоящее время, когда я пытаюсь его запустить, он выдает мне ошибку: Ошибка: не удалось обработать запрос, и в журнале из функции firebase я получил: GaxiosError: требуется разрешение ‘compute.instances.list’ для ‘projects / ProjectID’, поэтому я знаю конечно, это проблема авторизации.
Весь этот проект работал очень хорошо 2 месяца назад, но срок моей бесплатной пробной версии истек, и мы попытались перейти на другую учетную запись GCP и попытаться завершить этот проект (при этом я знаю, что код работает правильно, проблема наверняка в GCP, потому что также, когда я использую другие КОНЕЧНЫЕ ТОЧКИ API, не связанные с GCPресурсы, они работают просто хорошо).
Любая рекомендация была бы удивительной, и если я не предоставил достаточно информации, просто скажите мне. Спасибо за ваше время
Ответ №1:
Добавьте роль IAM, содержащую требуемое разрешение, в учетную запись службы облачных функций.
Например, роль roles/compute.viewer
имеет разрешение compute.instances.list
.
Просмотрите эту страницу, чтобы узнать больше о ролях IAM в вычислительном ядре:
Роли и разрешения IAM вычислительного движка
Функции Firebase — это облачные функции. Облачные функции используют App Engine default service account
для контроля доступа. Формат имени учетной записи службы: PROJECT_ID@appspot.gserviceaccount.com
. Найдите эту учетную запись службы в IAM и добавьте роль, указанную выше.
Комментарии:
1. Большое вам спасибо за вашу помощь. Проблема заключалась в том, что Функции были в другом проекте на GCP. Итак, я включил GCE API в этом проекте и создал экземпляр, и он работал корректно. Теперь мой новый вопрос: можно ли использовать функции из проекта «B» для доступа к ресурсам из проекта «A»? Еще раз спасибо за ваш полезный ответ.
2. ДА. В проекте A перейдите в раздел IAM. Добавьте адрес электронной почты учетной записи службы App Engine из проекта B. Назначьте необходимые роли.