【发布时间】:2021-11-27 04:22:39
【问题描述】:
我们的 GAE 应用多年来一直运行良好。我正在尝试切换到 IAM 角色来管理默认的存储桶(细粒度访问)。它不起作用。
切换到统一访问后,我将 StorageAdmin 权限授予 GAE 服务帐户。此时我们的代码在 getServingUrl() 中失败:
String filename = "/gs/" + bucketName + "/" + fileName;
String url = service.getServingUrl( ServingUrlOptions.Builder.withGoogleStorageFileName(filename ));
抛出 IllegalArgumentException,但没有详细的错误消息。
所以,我更多地使用权限。我将所有具有 StorageAdmin 权限的用户添加到存储桶。有两件有趣的事情需要注意:1)我可以直接从浏览器访问图像,使用:https://storage.googleapis.com/bucket/filename.png。 2)我们的应用程序没有任何变化。仍然得到与上述相同的行为!
对我来说,这毫无意义。 allUsers 不是意味着任何人或任何服务都可以访问这些文件吗?为什么添加 GAE 服务帐号不起作用?
【问题讨论】:
-
可以参考一下链接吗:stackoverflow.com/questions/48093210/… 有用吗?
-
并非如此。我们想使用签名的 URL,但访问被拒绝。似乎 GAE 被拒绝访问。这导致了一些在切换到统一访问方面的实验。当所有用户都被允许访问时,为什么 GAE 不能访问(即使我可以从 Web 浏览器访问)?!?!
-
其实,让我重新表述一下最初的问题。当只使用统一访问时,任何谷歌服务(应用引擎、云功能等)可以访问云存储中的任何内容吗?如果有,怎么做?
标签: google-app-engine google-cloud-storage