在两个谷歌云项目之间复制数据以及以数据为中心的环境中开发和生产环境的最佳实践

Dar*_*tel 3 cloud-storage google-cloud-storage google-cloud-platform

我有两个问题:

  1. 由于存储桶名称是唯一的,如何在开发环境和生产环境中保持桶名称完全相同。或者基于数据的环境中开发和生产环境的最佳实践是什么?

  2. 如何将数据从一个项目复制到另一个项目。我尝试搜索,但无法找到在两个项目之间复制的有效方法。

PS:存储传输允许在同一项目内的两个存储桶之间复制,而不是跨项目。即使使用搜索选项,我也无法从不同的项目中找到存储桶。我使用 gs://another-project-bucket 进行搜索

sll*_*pis 5

第一个问题

由于存储桶名称是唯一的,如何在开发环境和生产环境中保持桶名称完全相同。或者基于数据的环境中开发和生产环境的最佳实践是什么?

你是对的。就 Google Cloud Storage 存储桶而言,存储桶名称驻留在单个 Cloud Storage 命名空间中。根据文档,这意味着:

每个存储桶名称必须是唯一的。存储桶名称是公开可见的。如果您尝试创建一个名称已属于现有存储桶的存储桶,Cloud Storage 会返回一条错误消息。但是,删除存储桶后,您或其他用户可以将其名称重新用于新存储桶。

至于开发和生产环境的最佳实践,我想说所谓的“关注点分离”将是最好的选择。将一个项目用于开发目的,并分别将不同的项目用于生产目的将是最合适的。尽管如此,您可以在一个项目中同时运行 env 和 prod 这两个环境;不过,在某些情况下此选项并不理想。


第二个问题

如何将数据从一个项目复制到另一个项目。我尝试搜索,但无法找到在两个项目之间复制的有效方法。

这个问题的答案可能会有所不同:

  1. 您可以使用gsutil cp命令、REST API 或 GCS 客户端库(Java、Node.js、Python)跨项目复制 GCS 存储桶对象。更多信息可以在这里找到。
  2. 您还可以使用Cloud Storage Data Transfer Service将数据从一个 Cloud Storage 存储桶移动到另一个 Cloud Storage 存储桶来实现此目的,以便不同的用户或应用程序组可以使用这些数据。检查链接以获取更多信息。

使用示例gsutil cp如下:

gsutil cp gs://[SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME] gs://[DESTINATION_BUCKET_NAME]/[NAME_OF_COPY]
Run Code Online (Sandbox Code Playgroud)

在哪里:

[SOURCE_BUCKET_NAME]是包含要复制的对象的存储桶的名称。例如,我的桶。

[SOURCE_OBJECT_NAME]是要复制的对象的名称。例如,pets/dog.png。

[DESTINATION_BUCKET_NAME]是要将对象复制到的存储桶的名称。例如,另一个桶。

[NAME_OF_COPY]是您要为对象副本指定的名称。例如,shiba.png。


重要提示:确保您具有执行此类操作的正确设置权限

您还可以查看如何将数据直接从一个 Google Cloud Storage 项目移动到另一个项目?

  • @DarpanPatel 使用云存储数据传输服务,您可以在不同的项目之间移动数据,只需授予正确的权限即可。[此处](/sf/answers/3988742621/) 是一篇文章,您可以在其中了解如何执行此操作。 (3认同)