Кто-нибудь знает, как дать разрешение из моего проекта в GCP функции, созданной и развернутой в firebase? Потому что я делаю следующее:
- С сайта (развернутого также в firebase) вызов на серверную часть (функция Firebase)
- Сама функция пытается получить ресурсы из моего проекта GCP (в частности, какие экземпляры запущены в данный момент)
- Затем я получаю их и показываю на лицевой стороне.
Шаг 2 вызывает мои проблемы, в настоящее время, когда я пытаюсь его запустить, он выдает ошибку: Ошибка: не удалось обработать запрос и в журнале из функции firebase я получил: GaxiosError: требуется разрешение ‘compute.instances.list’ для ‘projects / projectID’, поэтому я точно знаю, что это проблема авторизации.
Весь этот проект работал хорошо 2 месяца назад, но моя бесплатная пробная версия истекла, и мы попытались перейти на другую учетную запись GCP и попытаться завершить этот проект (с этим я знаю, что код работает правильно, проблема наверняка в GCP, потому что также, когда я использую другие КОНЕЧНЫЕ ТОЧКИ API, не связанные с ресурсами GCP, они работают хорошо).
Любая рекомендация была бы потрясающей, и если бы я не дал достаточно информации, просто скажите мне. Спасибо за ваше время
Добавьте роль IAM, содержащую необходимое разрешение, в учетную запись службы Cloud Function.
Например, роль
roles/compute.viewer
имеет разрешениеcompute.instances.list
.Просмотрите эту страницу, чтобы узнать больше о ролях IAM в Compute Engine:
Роли и разрешения IAM в Compute Engine
Функции Firebase — это облачные функции. Cloud Functions использует
App Engine default service account
для управления доступом. Формат имени учетной записи службы:[email;protected]
. Найдите эту учетную запись службы в IAM и добавьте упомянутую выше роль.Контроль доступа к облачным функциям
Большое спасибо за вашу помощь. Проблема заключалась в том, что функции находились в другом проекте на GCP. Итак, я включил GCE API в этом проекте и создал экземпляр, и он работал правильно. Теперь мой новый вопрос: можно ли использовать функции из проекта B для доступа к ресурсам из проекта A? Еще раз за полезный ответ. — person Arian Calabrese; 30.12.2020
да. В проекте A перейдите в IAM. Добавьте адрес электронной почты для учетной записи службы App Engine из проекта B. Назначьте необходимые роли. — person Arian Calabrese; 30.12.2020