如何正确授权对Google Cloud Storage API的请求?

时间:2018-11-03 21:53:11

标签: google-cloud-storage google-cloud-iam

我正在尝试使用Google Cloud Storage JSON API通过http调用从存储桶中检索文件。

我正在GCE中与存储桶位于同一项目中的Container中卷曲,并且服务帐户对该存储桶具有读取权限

以下是请求的模式:

https://storage.googleapis.com/{bucket}/{object}

根据API控制台,由于服务帐户提供了“应用程序默认凭据”,因此我不需要任何特别的操作。但是,我一直这样:

Anonymous caller does not have storage.objects.get

我还尝试为该项目创建一个API密钥,并将其附加到url(https://storage.googleapis.com/{bucket}/{object}?key={key})上,但仍然出现相同的401错误。

如何授权查询此API的请求?

2 个答案:

答案 0 :(得分:1)

如果您能够创建另一个集群,则可以这样获得许可: 点击“高级编辑” first  然后单击“允许完全访问所有Cloud API”  second

就是这样:D

答案 1 :(得分:0)

您使用的URL不正确。这些API使用以https://www.googleapis.com/storage/v1/b开头的URL。

不建议使用API​​密钥。相反,您应该使用Bearer: token。我将展示两种方法。

要获取gcloud默认配置的访问令牌:

gcloud auth print-access-token

然后在您的curl请求中使用令牌。用gcloud命令中的令牌替换TOKEN。

要列出存储桶:

curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b

curl https://www.googleapis.com/storage/v1/b?key=APIKEY

列出对象:

curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b/examplebucket/o

curl https://www.googleapis.com/storage/v1/b/examplebucket/o?key=APIKEY

API Reference: List Buckets