我遵循了本教程,以允许使用签名的URL将文件从GWT前端直接上传到Google Cloud Storage。我通过指定可以正常工作的内容类型扩展了Java示例。然后,我看到以这种方式上传的文件不公开可读。为了使这个工作,我尝试了:
gsutil defacl set public-read gs://<bucket>
。再次上传文件-没有运气,stil不可见。gsutil acl set public-read gs://<bucket>/<file>
但它给了我AccessDeniedException:403 Forbidden。这是有道理的,因为gsutil已通过我的Google帐户进行了身份验证,并且已使用服务帐户及其P12密钥创建了已签名的URL。"x-goog-acl:public-read\n"
规范化的扩展头和适当的查询字符串参数,以通过签名检查。该死的,祝你好运!我的假设是,也许我正在使用的扩展头是错误的?然后,根据文档private
,默认情况下,所有对GCS进行身份验证的请求都将应用ACL。
无论如何-当我以项目所有者的身份登录时,为什么不能使这些文件从Google Console公开可读?对于通过控制台上传的所有文件,我都可以这样做(我知道在这种情况下,所有者是项目所有者,而不是服务帐户)。
我做错了什么?如何让任何人公开阅读它们?
感谢您的建议!
我认为,如果您阅读了给定的文档。明确提到,如果您需要用户不使用Google帐户就下载对象,则此方法会为用户提供在特定时间分配的URL,以供用户下载对象。我假设这是不可能的,因为这些对象已签名就可以公开使用。如果仍然需要该功能,建议您进行对象的可恢复上传或简单上传。
另外,请尝试将您的项目服务帐户作为所有者放在存储区名称右侧的开发人员控制台中的“编辑对象的默认权限”中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句