使用云函数将 Firestore 导出到 Cloud Storage

Exporting Firestore to Cloud Storage using a cloud function

我有一个调用 exportDocuments 的云函数,如下所示:

client = googleapiclient.discovery.build('firestore', 'v1beta1')
client.projects().databases().exportDocuments(name=name, body=body).execute()

由于身份验证错误而崩溃:

HttpError 403 "The caller does not have permission"

使用 Pub/Sub 触发时,云功能崩溃。 但是,如果我 运行 来自 Cloud Shell 的相同代码,它就可以工作。

我的问题是:

Cloud Function 服务帐户有 project Editor role by default。此角色不包括启动 Cloud Firestore 导出的权限。

您可以按照 steps 3 and 4 here 授予默认服务帐户 YOUR_PROJECT_ID@appspot.gserviceaccount.com 启动 Cloud Datastore/Firestore 导出和访问您指定的 Cloud Storage 存储桶的权限。