项目之间的Firestore和Storage Bucket导出/导入

Bad*_*dgy 3 google-cloud-storage firebase google-cloud-firestore

因此,在当前的Google Cloud CLI Beta功能中,可以选择导入和导出Firestore数据。 https://firebase.google.com/docs/firestore/manage-data/export-import

现在,我进行了“导出到存储桶”操作,一切正常,然后再次导入,效果也很好。现在我有两个不同的项目,想将备份导入到另一个项目中,这可能吗?如果我也只需要一个项目的计费帐户,那将很好。

Docs中的这一行表示可能

在Cloud Storage中导出文件后,您可以将这些文件中的文档导入回到您的项目或另一个项目中。

但是文档没有涵盖其具体执行情况吗?

Hon*_*Guy 9

可以在项目之间导入/导出。以下是对我有用的步骤:

首先,请确保gcloud已安装命令行工具。可以在Firebase有关Firestore导出和导入的文档页面上阅读有关设置的说明以及有关导出/导入过程的完整信息。

在继续之前,设置gcloud项目从您要的项目数据:

gcloud config set project [PROJECT_ID]

然后,使用Google Cloud Console Web应用程序,确保已在项目上创建了Cloud Storage存储桶,该存储桶将成为数据

例如,对于源存储桶,您可以创建一个存储桶,例如:

gs://my-source-project-export

您可以为存储桶命名,只要您选择独特的名称即可。

然后可以使用命令完成源数据的导出。例如,如果您只想将camerasand radios集合导出到您的my-source-project-export存储桶中,并带有注明日期的目录以标识导出,则可以包含可选collection-ids标志,如下所示:

gcloud beta firestore export gs://my-source-project-export/export-20190113_2109 --collection-ids='cameras','radios'

省略该标志将复制所有集合。

gcloud CLI工具应该完全没有问题的出口。

现在,要完成导入,我们首先将gcloud项目切换到数据目标

gcloud config set project [PROJECT_ID]

然后,我们可以尝试导入:

gcloud beta firestore import --collection-ids='cameras','radios' gs://my-source-project-export/export-20190113_2109

由于权限问题,该操作可能会失败。如果是这样,它将报告哪个服务帐户需要访问存储桶。要解决权限问题,您可以简单地使用 Google Cloud Console存储浏览器来管理存储桶的权限。必须将具有角色的所需服务帐户添加到成员列表中Storage Admin

纠正权限后,可以重新尝试该操作。对于长时间运行的操作,可以使用以下命令检索操作及其状态的列表:

gcloud beta firestore operations list

导入完成后,最好撤消授予服务帐户的权限(如果有的话),以避免任何不必要的安全问题。

希望能有所帮助。

  • 对于那些不知道他们的服务帐户是什么的人:它是 [PROJECT_ID]@appspot.gserviceaccount.com。所以如果你想从项目A导入一个数据到项目B,那么你必须在项目B的bucket中允许项目A的服务账号[PROJECT_A_ID]@appspot.gserviceaccount.com (2认同)
  • 首先,我尝试在 Google Cloud Console Web 应用程序中执行此操作,但我永远无法让目标项目查看源项目的存储桶。但是,只需使用 gcloud CLI 执行相同的操作(根据上面的说明,除非没有 beta 前缀)就可以了!仍然不明白为什么,但是耶!感谢您清晰简洁的演练! (2认同)