Google compute engine 访问数据存储的计算引擎获取无效凭据(代码:401)

Google compute engine 访问数据存储的计算引擎获取无效凭据(代码:401),google-compute-engine,google-cloud-datastore,Google Compute Engine,Google Cloud Datastore,我正在学习有关的教程 正在尝试使用我的计算引擎项目中的数据存储 步骤2在前面提到的教程中,当从计算引擎运行时,我不必创建新的服务帐户凭据 我使用以下工具运行示例: node test.js abc-test-123 其中abc-test-123是我的项目Id,该项目已启用所有云API访问,包括数据存储API 上传代码并执行示例后,我得到以下错误: Adams:{'rpc error':{[error:无效凭据]代码:401, 错误:[[Object]]} 更新: 我做了一个变通方法,将默认示例

我正在学习有关的教程 正在尝试使用我的计算引擎项目中的数据存储

步骤2在前面提到的教程中,当从计算引擎运行时,我不必创建新的服务帐户凭据

我使用以下工具运行示例:

node test.js abc-test-123
其中abc-test-123是我的项目Id,该项目已启用所有云API访问,包括数据存储API

上传代码并执行示例后,我得到以下错误:

Adams:{'rpc error':{[error:无效凭据]代码:401, 错误:[[Object]]}

更新

我做了一个变通方法,将默认示例代码更改为使用JWT凭证方式(使用生成的.json密钥文件),现在一切正常

更新2

这是我运行时的范围配置

gcloud compute instances describe abc-test-123
结果是:

serviceAccounts:
   scopes:
  - https://www.googleapis.com/auth/cloud-platform
根据该文件:

只能在创建新实例时设置作用域,而不能 更改或扩展现有实例的作用域列表。对于 简单,您可以选择启用对所有Google云的完全访问 具有 范围

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

这很可能意味着在创建实例时,没有指定正确的范围(
数据存储
用户信息电子邮件
)。您可以通过执行以下命令来检查:

gcloud compute instances describe <instance>
gcloud计算实例描述

在输出中查找
serviceAccounts
/
范围。

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

  • gcloud计算实例创建$INSTANCE_NAME——范围数据存储,用户信息电子邮件
  • 使用web:在访问和设置时启用用户信息和数据存储

  • 我认为你是对的。价值是“云平台”。此值似乎不包括“userinfo电子邮件”范围。我稍后会尝试测试它。谢谢,
    云平台
    数据存储
    的超集,但您仍然需要指定
    https://www.googleapis.com/auth/userinfo.email
    ,如下所述:。