使用云函数将 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 的相同代码,它就可以工作。
我的问题是:
我做错了吗?因为我在云函数中执行,所以不应该自动处理身份验证吗?我的意思是它在云端工作 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 存储桶的权限。
我有一个调用 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 的相同代码,它就可以工作。
我的问题是:
我做错了吗?因为我在云函数中执行,所以不应该自动处理身份验证吗?我的意思是它在云端工作 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 存储桶的权限。