Google cloud storage 如何正确授权对谷歌云存储API的请求?

Google cloud storage 如何正确授权对谷歌云存储API的请求?,google-cloud-storage,google-cloud-iam,Google Cloud Storage,Google Cloud Iam,我正在尝试使用Google云存储JSON API使用http调用从一个bucket中检索文件 我从GCE中与存储桶位于同一项目中的容器中进行卷曲,并且服务帐户具有对存储桶的读取权限 以下是请求的模式: https://storage.googleapis.com/{bucket}/{object} 根据API控制台,我不需要任何特别的东西,因为服务帐户提供应用程序默认凭据。然而,我一直有这样的想法: Anonymous caller does not have storage.objects.

我正在尝试使用Google云存储JSON API使用http调用从一个bucket中检索文件

我从GCE中与存储桶位于同一项目中的容器中进行卷曲,并且服务帐户具有对存储桶的读取权限

以下是请求的模式:

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的请求?

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

不建议使用API密钥。相反,您应该使用
承载:令牌
。我将展示这两种方法

要获取gcloud默认配置的访问令牌,请执行以下操作:

gcloud auth打印访问令牌

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

要列出存储桶,请执行以下操作:

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”


就是这样:D

你在用库伯内特斯吗?还是仅仅是计算引擎?KKETHANKS上的Kubernetes。我是accross
gcloud auth print access token
来的,但它只生成一个短期令牌。我在一个GCP项目中使用这个API,我希望避免实现整个Oauth流。所有访问令牌都是短期的。生成访问令牌相当容易。然后在过期之前授权另一个。您的另一个选择是使用SDK和服务帐户凭据,它们是为您的用例设计的。但是,您正在更改问题-创建一个新问题。另外,当您使用curl时,您的凭据不会被使用。仅使用您指定的curl。