Вопрос
Как мы можем дать разрешение удаленной функции 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