google-app-engine - 已设置 ACL 的上传文件不可公开读取

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

我目前正在开发一个在 GAE 上运行的应用程序,该应用程序将接受图像上传,然后使用 GCS 客户端库(之前使用 Cloud Storage API 获得相同的结果)将其写入存储。我看到的问题是,在写入文件后,只有当您已经使用 Google 帐户登录时才能访问这些文件。我已启用计费功能,并且我的 GAE id (XXXXXX@appspot.gserviceaccount.com) 作为团队成员作为所有者添加到 Google API 项目中

我已经使用了命令:gsutil setdefacl public-read gs://mybucket(Bucket 名称在实时代码中是正确的)。

我的 ACL 中有以下条目:

<Entry>
  <Scope type="AllUsers"/>
    <Permission>
      READ
  </Permission>
</Entry>

我正在用这段代码初始化写入:

GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(bucket, fileName);
GcsFileOptions options = new GcsFileOptions.Builder()
  .mimeType(mime)
  .acl("public-read").build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);

该应用程序将文件的 url 返回给客户端,正如我所提到的,这对任何 Google 用户都适用,但任何其他用户在尝试访问 https://storage.cloud.google.com/mybucket/filename.png 时都会被重定向。网址。此外,当我登录到云存储 Web 界面时,当我将鼠标悬停在“SHARED PUBLICLY”列中的框(其中有一个破折号)时,我收到一条悬停消息“您无权查看或编辑此对象的ACL”。但是,我可以毫无问题地删除该文件,并且我登录的帐户被设置为 API 项目的所有者。

我确定我在这里遗漏了一些简单的东西,但我已经阅读了所有文档并且已经为此工作了几天。任何见解表示赞赏。

最佳答案

公开阅读问题

storage.cloud.google.com 域由 Cloud Storage UI 使用,只有登录用户才能访问。它不是 API 端点。您应该使用 https://storage.googleapis.com/bucketname/objectnamehttps://bucketname.storage.googleapis.com/objectname

编辑 ACL 的权限被拒绝

只有对对象拥有 FULL_CONTROL 的用户或对象的所有者才能查看对象的 ACL。听起来该对象归您的服务帐户所有,而您的帐户对该对象没有 FULL_CONTROL,因此它无法查看 ACL。您仍然可以删除对象,因为对存储桶具有 FULL_CONTROL 的用户始终能够删除存储桶中的对象。

关于google-app-engine - 已设置 ACL 的上传文件不可公开读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074793/

相关文章:

node.js - GCP 云存储 : What is the difference between bucket. 上传和文件保存方法?

适用于 Google Cloud Storage 和大文件的 Python 客户端

google-app-engine - 用于从谷歌云存储桶中删除图像的API

java - 如何使用 JDOQL 检索作为类属性的对象列表?

python - 使用 Python (GAE) 读取图像的颜色

typescript - 如何使用 Firebase Firestore 在客户端上缓存 getDownloadUrl() 调用?

java - 如何在 Google appengine 中加密 ZipOutputStream?

python - 如何在python中压缩一个非常大的文件

java - 可以在 Google App Engine 下运行的 WordPress 类似\克隆有哪些?

multithreading - 是否有适用于 Python 2.7 的 ereporter 版本