计算引擎访问DataStore获取无效凭据(代码:401)

时间:2015-11-21 07:57:57

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

我正在关注本教程 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':{[错误:凭据无效]代码:401,   错误:[[Object]]}}

更新

我通过更改默认示例代码以使用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   范围。

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

2 个答案:

答案 0 :(得分:2)

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

gcloud compute instances describe <instance>

在输出中查找serviceAccounts / scopes

答案 1 :(得分:0)

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

  1. gcloud compute instances创建$ INSTANCE_NAME --scopes datastore,userinfo-email
  2. 使用网络:on Access&amp;设置启用用户信息&amp;数据存储