gcloud Firestore 导入:PERMISSION_DENIED

问题描述 投票:0回答:2

我正在尝试将包含 Firestore 数据库导出的存储桶导入到另一个 Firebase 项目中。我一直在遵循本指南了解如何执行此操作。

运行

gcloud firestore import
时,我遇到以下问题:

错误:(gcloud.firestore.import)PERMISSION_DENIED:服务帐户无权访问 Google Cloud Storage 文件:/bucket/EXPORT_PREFIX.overall_export_metadata。请参阅 https://cloud.google.com/datastore/docs/export-import-entities#permissions 了解所需权限的列表。错误详细信息:[电子邮件受保护] 没有 storage.buckets.get 访问 Google Cloud Storage 存储桶的权限。

但是,我确实使用以下命令来授予对存储桶的访问权限:

gsutil iam ch serviceAccount:[email protected]:admin gs://bucket_name

这并没有给我任何错误,所以我认为它按预期运行。我三次检查并相信我在使用这些命令时正在正确的项目中工作。

我认为

import
命令可能是使用
[email protected]:admin
之外的另一个服务帐户运行的,但我不确定这一点或如何确保使用正确的服务帐户。

任何有关解决此问题的帮助将不胜感激! :)

firebase google-cloud-firestore gcloud
2个回答
2
投票

错误消息似乎包含有问题的服务帐户:

Error details:
[email protected]
does not have storage.buckets.get access to the Google Cloud Storage bucket.

我认为你需要:

gsutil iam ch \
serviceAccount:[service-XXX]@gcp-sa-firestore.iam.gserviceaccount.com:objectViewer \
gs://[bucket-name]

替换

[service-XXX]
[bucket-name]


0
投票

您可以按照指南操作,但使用服务帐户“service-[PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com”而不是“[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com”。

例如:

gsutil iam ch serviceAccount:service-[PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com:legacyBucketReader,legacyObjectReader \
gs://[SOURCE_BUCKET]
gcloud config set project [DESTINATION_PROJECT_ID]
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async

© www.soinside.com 2019 - 2024. All rights reserved.