存储桶中的文件丢失"公开共享"自动构建后的权限

时间:2018-04-17 20:54:58

标签: google-cloud-platform google-cloud-storage google-cloud-iam

我对Google Cloud有点新意,并且正在使用存储桶来托管静态网站。

当我的主分支更新时,我通过构建触发器集成了自动构建。当我推送到GitHub时,我成功地看到了这些更改,但是当一个预先存在的文件(例如index.html)得到更新时,该文件将失去“公共共享”的权限。

我已按照下面的教程进行操作,唯一的区别是您现在在平台上的单个文件级别处理对象权限,而不是存储桶的顶层。

https://cloud.google.com/community/tutorials/automated-publishing-container-builder

这是我的cloudbuild.yaml文件

steps:
  - name: gcr.io/cloud-builders/gsutil
    args: ["-m", "rsync", "-r", "-c", "-d", ".", "gs://www.mysite.com"]

1 个答案:

答案 0 :(得分:0)

如果您未在存储桶级别配置默认情况下该存储桶中的所有对象都是公开可读的,则您需要将该权限重新应用于新上传的文件。

如果您知道所有更新的文件都需要设置为公开可读,则可以在rsync命令中使用-a选项,并使用名为“public-read”的canned_acl。您的cloudbuild.yaml文件如下所示:

steps:
  - name: gcr.io/cloud-builders/gsutil
    args: ["-m", "rsync", "-a", "public-read", "-r", "-c", "-d", ".", "gs://www.mysite.com"]

如果您不想一次性将所有对象设置为公开可读,则需要通过列出对象并使用以下命令应用权限来基于每个对象设置权限:

gsutil acl ch -u AllUsers:R gs://nameBucket/dir/namefile.ext