Google compute engine 访问数据存储的计算引擎获取无效凭据(代码:401)
我正在学习有关的教程 正在尝试使用我的计算引擎项目中的数据存储 步骤2在前面提到的教程中,当从计算引擎运行时,我不必创建新的服务帐户凭据 我使用以下工具运行示例: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]]} 更新: 我做了一个变通方法,将默认示例
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
,如下所述:。