Google Cloud Storage公开分享

Jer*_*sia 3 google-cloud-storage

我的存储桶上的Acl权限如下:

<?xml version="1.0" ?>
<AccessControlList>
    <Owner>
        <ID>00b4903a97dfaa16aff41eeb91e90b5fb524f1daf0d88fceca29b6f647412e8d</ID>
    </Owner>
    <Entries>
        <Entry>
            <Scope type="GroupById">
                <ID>00b4903a97dfaa16aff41eeb91e90b5fb524f1daf0d88fceca29b6f647412e8d</ID>
            </Scope>
            <Permission>FULL_CONTROL</Permission>
        </Entry>
        <Entry>
            <Scope type="AllUsers"/>
            <Permission>READ</Permission>
        </Entry>

<Entry>
   <Scope type="UserByEmail">
      <EmailAddress>
         my_app@appspot.gserviceaccount.com
      </EmailAddress>
   </Scope>
   <Permission>
      WRITE
   </Permission>
</Entry>

    </Entries>
</AccessControlList>
Run Code Online (Sandbox Code Playgroud)

但是,当我在此存储桶中上传新文件时,默认情况下不会共享.

我想我应该是因为AllUsers权限设置为读取

Mar*_*hen 10

我认为你混淆了桶权限和对象权限.存储桶是公共可读的,因此每个人都可以列出存储桶的内容,但您上传的对象具有自己的权限集.如果您希望上传的对象可公开读取,则需要明确启用它.您可以使用以下命令来执行此操作:

gsutil setacl public-read gs://bucket/object
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下命令将包含存储桶的默认对象ACL设置为可公开读取:

gsutil setdefacl public-read gs://bucket
Run Code Online (Sandbox Code Playgroud)

后者的优点是上传到该存储桶的每个对象都将自动继承包含存储桶的公共可读性.