我正在关注本教程 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 范围。
我仍然欢迎任何关于为什么原始代码在我的情况下不起作用的答案〜 感谢您的阅读
答案 0 :(得分:2)
这很可能意味着在您创建实例时,您没有根据教程指定正确的范围(datastore
和userinfo-email
。您可以通过执行以下命令来检查:
gcloud compute instances describe <instance>
在输出中查找serviceAccounts
/ scopes
。
答案 1 :(得分:0)
创建具有正确凭据的实例有两种方法: