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

Tom*_*man 6 google-app-engine google-cloud-storage

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

我不能这样设置acl :(同时拥有公共读取和所有者完全控制)

GcsFileOptions options = new GcsFileOptions.Builder().acl("bucket-owner-full-control;public-read").build();
Run Code Online (Sandbox Code Playgroud)

这里有什么解决方案?

Bra*_*ugh 7

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

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

$> gsutil defacl ch -g AllUsers:R gs://mybucket
Run Code Online (Sandbox Code Playgroud)

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

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