【问题标题】:Compute Engine accessing DataStore get Invalid Credentials (code: 401)访问 DataStore 的 Compute Engine 获取无效凭据(代码:401)
【发布时间】:2015-11-21 07:57:56
【问题描述】:

我正在关注关于 https://cloud.google.com/datastore/docs/getstarted/start_nodejs/ 尝试使用我的 Compute Engine 项目中的数据存储区。

第 2 步在教程中提到从 Compute Engine 运行时我不必创建新的服务帐户凭据

我运行示例:

node test.js abc-test-123

其中 abc-test-123 是我的项目 ID,并且该项目已启用所有云 API 访问,包括 DataStore API。

上传代码并执行示例后,出现以下错误:

Adams: { 'rpc error': { [Error: Invalid Credentials] code: 401, 错误:[ [对象] ] } }

更新

我通过更改默认示例代码以使用 JWT 凭据方式(使用生成的 .json 密钥文件)做了一个解决方法,现在一切正常。

更新 2

这是我运行时的范围配置

gcloud compute instances describe abc-test-123

结果:

serviceAccounts:
   scopes:
  - https://www.googleapis.com/auth/cloud-platform

根据文档:

只能在创建新实例时设置范围,不能 更改或扩展现有实例的范围列表。为了 简单,您可以选择启用对所有 Google Cloud 的完全访问权限 带有https://www.googleapis.com/auth/cloud-platform 的平台 API 范围。

我仍然欢迎任何关于为什么原始代码在我的情况下不起作用的答案~ 感谢阅读

【问题讨论】:

    标签: google-compute-engine google-cloud-datastore


    【解决方案1】:

    这很可能意味着当您创建实例时,您没有指定正确的范围(根据教程,datastoreuserinfo-email)。您可以通过执行以下命令来检查:

    gcloud compute instances describe <instance>
    

    在输出中查找serviceAccounts/scopes

    【讨论】:

    • 我认为你是对的。价值是“云平台”。此值似乎不包括“userinfo-email”范围。我稍后会尝试测试它。谢谢
    • 是的,cloud-platformdatastore 的超集,但您仍需要指定https://www.googleapis.com/auth/userinfo.email,如此处所述:cloud.google.com/datastore/docs/apis/v1beta2/datasets/lookup
    【解决方案2】:

    有两种方法可以创建具有正确凭据的实例:

    1. gcloud 计算实例创建 $INSTANCE_NAME --scopes datastore,userinfo-email
    2. 使用网络:在访问和设置启用用户信息和数据存储

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多