Google Compute Engine:无法从 gcloud 终端查询 API
Posted
技术标签:
【中文标题】Google Compute Engine:无法从 gcloud 终端查询 API【英文标题】:Google Compute Engine: Unable to query API from gcloud terminal 【发布时间】:2015-12-09 06:29:09 【问题描述】:我在我的项目中创建了许多虚拟机,我想从中从 gcloud 终端查询 api。 我在尝试查询任何 API 时收到 401 -“需要登录”错误,即使我已授权/登录到 gcloud 终端。
C:\..\Google\Cloud SDK>gcloud config list
[core]
account = remis.haroon@*****.com
disable_usage_reporting = True
project = <proj-id>
[meta]
active_config = default
C:\..\Google\Cloud SDK>curl https://www.googleapis.com/compute/v1/projects/<proj-id>/aggregated/disks
"error":
"errors": [
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
],
"code": 401,
"message": "Login Required"
【问题讨论】:
【参考方案1】:使用 REST API 时需要携带授权令牌:
gcloud auth login
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" <url>
【讨论】:
【参考方案2】:正如错误中提到的:
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
由于您正在对 google api 进行 HTTP API 调用,因此您需要将 OAuth 访问令牌放入 header of your HTTP request。
GET compute/v1/projects/<proj-id>/aggregated/disks HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer XXXXXXXXXXXXXXXXXXX
有几种方法可以获取 OAuth 访问令牌。一种简单的方法是通过谷歌的oauthplayground。
-
选择所需的 API 范围
点击授权 API 按钮
点击“兑换代币授权码”
您将拥有访问令牌以在 curl 请求标头中使用它
【讨论】:
以上是关于Google Compute Engine:无法从 gcloud 终端查询 API的主要内容,如果未能解决你的问题,请参考以下文章
Cronjob 无法在 Google Compute Engine 上运行
无法在 Google Cloud Compute Engine 上使用 GPU
连接 Google App Engine 和 Google Compute Engine
Google Compute Engine:如何从外部提出请求?
如何更改 Google Compute Engine 服务帐户的范围以将数据写入 Google Cloud Storage 存储桶?