Firebase инициализирует sdk с учетной записью службы из облачного хранилища

#firebase #google-cloud-functions #google-cloud-storage #firebase-admin

# #firebase #google-cloud-функции #google-облачное хранилище #firebase-администратор

Вопрос:

Я пытаюсь инициализировать наш sdk, следуя приведенным здесь инструкциям: https://firebase.google.com/docs/admin/setup#initialize-sdk

По сути, я создал учетную запись службы и сохранил сопутствующий json для этой учетной записи службы в облачном хранилище. Отлично. Теперь в примере говорится, что я должен ссылаться на этот Json с помощью:

Задайте переменной среды GOOGLE_APPLICATION_CREDENTIALS путь к файлу JSON, который содержит ключ вашей учетной записи службы

Но мы не храним файл локально для этих облачных функций, мы храним его в облачном хранилище. Как нам указать путь к нелокальному файлу?

Ответ №1:

Admin SDK не поддерживает удаленные конфигурации. Он должен быть локальным, либо на диске, либо в памяти. Вам нужно будет написать код, чтобы каким-то образом загрузить конфигурацию из хранилища, а затем передать ее в SDK.

Комментарии:

1. Хорошо, это довольно странно. Облачные функции не имеют сервера, поэтому довольно странно создавать что-то, что хочет проверять локальную файловую систему. Было бы очень неэффективно загружать файл при каждом запуске функции. Есть ли у вас какой-либо справочный код, который мы могли бы использовать, чтобы увидеть, как это «обычно» делается?

2. Обычно учетные данные развертываются в файле вместе с исходным кодом функции (как вы видите в некоторых официальных примерах), чтобы к нему можно было получить доступ локально. Или вы можете использовать environment config для их предоставления. Оба варианта чрезвычайно распространены.

3.Пример приведен в официальных примерах: 1 2 3 4 5. Я устал от grepping после 5, но вы можете найти больше. Или вы всегда можете использовать учетную запись службы по умолчанию для проекта, если хотите. Но это даст вам то, что вы хотите.

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

5. Если вы хотите использовать учетную запись службы по умолчанию для своего проекта, как упоминал Хиранья, вы можете инициализировать Admin SDK без параметров. Но если вам нужна конкретная учетная запись, она должна быть доступна локально каким-либо образом.

Ответ №2:

Чтобы инициализировать Admin SDK локально (не развернутый), вам необходимо загрузить json-файл учетной записи службы и сделать его доступным с помощью:

  1. Установка переменной env GOOGLE_APPLICATION_CREDENTIALS в путь «/home/user/serviceaccount.json».
  2. Включите файл учетной записи службы в файл функций и получите к нему программный доступ по относительному пути.

После развертывания существует учетная запись службы выполнения PROJECT_ID@appspot.gserviceaccount.com , и переменные среды уже установлены.