我有两个问题:
由于存储桶名称是唯一的,因此如何在开发环境和生产环境中保持桶名称完全相同。还是在基于数据的环境中开发和生产环境的最佳实践是什么?
如何将数据从一个项目复制到另一个项目。我尝试搜索,但无法获得在2个项目之间进行复制的有效方法。
PS:存储传输允许在同一项目中的两个存储桶之间复制,而不是跨项目。即使使用搜索选项,我也无法从其他项目中找到存储桶。我使用gs:// another-project-bucket
搜索答案 0 :(得分:0)
作为最佳实践,我建议使用不同的存储桶进行生产和开发,以避免潜在的未经测试的开发代码影响生产数据。
如果源对象和目标对象具有相同的位置和存储类,则复制是高效的(仅元数据,无数据复制)。
答案 1 :(得分:0)
如何将数据从一个项目复制到另一个项目。我尝试搜寻,但我 无法获得在2个项目之间进行复制的有效方法。
创建两个存储桶:
gcloud projects create env-proj
gcloud projects create env-proj2
将项目属性设置为源项目:
gcloud config set project env-proj
在源项目中创建文件:
nano file
cat file
# This is a file
在源项目中创建存储桶:
gsutil mb gs://testbucket-env
将文件复制到创建的存储桶中:
gsutil cp file gs://testbucket-env
将项目属性设置为目标项目:
gcloud config set project env-proj2
将文件复制到目标项目:
gsutil mv gs://testbucket-env/file file
测试:
cat file
# This is a file
答案 2 :(得分:0)
由于存储桶名称是唯一的,因此如何在开发环境和生产环境中保持桶名称完全相同。还是在基于数据的环境中开发和生产环境的最佳实践是什么?
您是正确的。就Google Cloud Storage存储桶而言,存储桶名称位于单个Cloud Storage名称空间中。根据{{3}},这意味着:
每个存储桶名称必须唯一。 桶名称是公开可见的。 如果您尝试使用已经属于现有存储桶的名称创建存储桶,则Cloud Storage会显示一条错误消息。但是,删除存储桶后,您或其他用户可以将其名称重新用于新存储桶。
关于开发和生产环境的最佳实践,我想说的是所谓的“关注点分离”将是最好的选择。最适合的选择是为开发目的使用一个项目,而为生产目的而单独使用另一个项目。但是,您可以在单个项目中同时运行env和prod这两种环境。不过,在某些情况下,此选项并不理想。
如何将数据从一个项目复制到另一个项目。我尝试搜索,但无法获得在2个项目之间进行复制的有效方法。
此问题的答案可能有所不同:
gsutil cp
命令,REST API或GCS客户端库(Java,Node.js,Python)在整个项目中复制GCS存储桶对象。可以找到更多信息documentation。 使用gsutil cp
的示例如下:
gsutil cp gs://[SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME] gs://[DESTINATION_BUCKET_NAME]/[NAME_OF_COPY]
位置:
[SOURCE_BUCKET_NAME]
是包含要复制的对象的存储桶的名称。例如,我的桶。
[SOURCE_OBJECT_NAME]
是要复制的对象的名称。例如pets / dog.png。
[DESTINATION_BUCKET_NAME]
是要在其中复制对象的存储桶的名称。例如另一个水桶。
[NAME_OF_COPY]
是您要提供对象副本的名称。例如shiba.png。
重要提示:请确保您具有执行此类型操作的正确设置权限
您还可以选中link。