FirestoreAdminClient.exportDocuments имеет разрешение от локальной функции Firebase, но не от удаленной функции Firebase - PullRequest
1 голос
/ 06 февраля 2020

Вопрос

Как мы можем дать разрешение удаленной функции Firebase на запуск FirestoreAdminClient.exportDocuments?

Что мы попробовали

Локально, мы можем запустить следующий код. Мы запускаем локальный сервер и затем вызываем локальную функцию, которая вызывает backupDatabase. Функция успешно инициирует операцию экспорта Firestore.

firebase login
firebase serve
curl <functionUrl>

Однако, когда мы развертываем функцию и затем вызываем удаленную функцию, которая вызывает backupDatabase, мы получаем 7 PERMISSION_DENIED: The caller does not have permission..

Это код, который работает локально, но не работает удаленно.

import firebaseAdmin from 'firebase-admin';

const backupDatabase = async (): Promise<string> => {
  const projectId = process.env.GCLOUD_PROJECT;
  const adminClient = new firebaseAdmin.firestore.v1.FirestoreAdminClient();
  const [success] = await adminClient.exportDocuments({ // <--- ERROR HERE
    name: adminClient.databasePath(projectId, '(default)'),
    outputUriPrefix: `gs://${projectId}-backups`
  });

  return success.name;
};

Ресурсы

Документация для FirestoreAdminClient: https://googleapis.dev/nodejs/firestore/latest/v1.FirestoreAdminClient.html

Документация для exportDocuments: https://googleapis.dev/nodejs/firestore/latest/v1.FirestoreAdminClient.html#exportDocuments

...