ABr*_*m K 11 google-cloud-storage
我正在使用Google Cloud Storage为我的Google App Engine应用程序存储图像,而我正在尝试访问这些图像:
<img src="https://storage.googleapis.com/BUCKET_NAME/IMAGE_NAME">
Run Code Online (Sandbox Code Playgroud)
但是,这会显示"拒绝访问"或向我显示Google登录提示.然后我尝试使用签名URL授予客户端访问权限.
我生成了要签名的URL,如下所示:
String HTTP_Verb = "GET";
String Expiration = "1361993085";
String Canonicalized_Resource = "/bucket_name/sub_directory";
String stringToSign = HTTP_Verb + "\n" + Expiration + "\n" + Canonicalized_Resource;
Run Code Online (Sandbox Code Playgroud)
然后使用p12文件生成Base64并使用Java编译,但是我收到此错误:
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?有没有办法可以在没有身份验证的情况下从GCS访问图像?
ABr*_*m K 18
最后2天后,让它运转起来.答案是:我的方法是错误的,不需要签名的URL.我需要将我的存储桶添加为公共读取,以便我可以从浏览器请求中读取它.就这样.打开gsutil,输入:
gsutil -m acl -r set public-read gs://BUCKET_NAME
Run Code Online (Sandbox Code Playgroud)
并将此设置为所有未来上传的默认值
gsutil -m defacl set public-read gs://BUCKET_NAME
Run Code Online (Sandbox Code Playgroud)
希望它可以帮到某人!
感谢@kctang!
gsutil 已更新,您现在需要做:
gsutil -m acl -r set public-read gs://bucket-name
gsutil -m defacl set public-read gs://bucket-name
Run Code Online (Sandbox Code Playgroud)
PS对于不熟悉的人gsutil,这里是如何安装它.
对于更一般的答案,访问 gs:// url 的方法是使用以下格式:
https://console.cloud.google.com/storage/browser/[BUCKET_NAME]/
例如,如果您尝试访问的存储桶是 Landsat 公共数据集,gs://gcp-public-data-landsat/那么您将使用以下 url 访问存储桶:https://console.cloud.google.com/storage/gcp-public-data-landsat/
以下是与访问存储桶相关的文档:
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |