Google云端存储客户端库 - 将acl设置为“public-read”和“bucket-owner-full-control”

时间:2014-01-03 15:37:47

标签: google-app-engine google-cloud-storage

对于谷歌云存储中的appengine创建文件,存储桶拥有者没有完全控制权限。

我无法通过这种方式设置acl :(同时拥有公共读取和所有者完全控制权)

GcsFileOptions options = new GcsFileOptions.Builder().acl("bucket-owner-full-control;public-read").build();

这里有什么解决方案?

1 个答案:

答案 0 :(得分:7)

很遗憾,您无法一次使用多个预设ACL。没有固定的ACL意味着“让桶主完全控制对象,并使其可公开读取。”还不幸的是,我不相信GcsFileOptions提供了一种指定自定义ACL的简单方法(虽然我可能已经错过了,任何知道其中一个的人都可以随意编辑它。)

一种可能性是更改存储桶中新对象的默认ACL,然后根本不显式设置ACL。您可以使用gsutil非常轻松地为匿名用户添加默认读取权限:

$> gsutil defacl ch -g AllUsers:R gs://mybucket

(注意:有一个类似的命令gsutil acl,它控制存储桶或对象的ACL,而不是存储桶中新创建的对象的默认ACL。很容易混淆两者。)

N.B。这将影响在此存储桶中创建的未指定ACL的所有对象,如果您还要在此存储桶中为其他目的创建其他对象并且依赖于特定的默认ACL,则这可能不合适。