google.api_core.exceptions.Forbidden:403权限丢失或不足

时间:2017-12-06 10:12:01

标签: python google-app-engine google-cloud-datastore

提交了类似的问题,但没有一个解决方案有效。

尝试从Google Cloud文档执行this tutorial时,尝试访问数据存储区时出现以下错误:

google.api_core.exceptions.Forbidden: 403 Missing or insufficient 
permissions.

可以找到执行的文件here

我确实执行了以下命令:

gcloud auth application-default login
export GOOGLE_APPLICATION_CREDENTIALS="file.json"

请注意我正在本地计算机上执行该文件。目标是直接从Google Engine应用程序对数据存储区执行读/写操作。

3 个答案:

答案 0 :(得分:3)

您尝试使用两种不同形式的身份验证,我不建议这样做。

来自Google的documentation," gcloud auth application-default login"如果您希望本地应用程序暂时使用您自己的用户凭据进行API访问。

当您使用"导出GOOGLE_APPLICATION_CREDENTIALS =' file.json'",根据Google的documentation,您要为&#设置环境变量34; file.json&#34 ;.这意味着您需要创建一个服务帐户,为服务帐户分配适当的权限,创建/下载一个密钥(在这种情况下是" file.json")然后环境变量将生效当你的代码被执行时。

由于您刚开始使用,我建议您开始使用Cloud Shell中提供的Google Cloud Console并使用拥有Google所有权的帐户项目。这将使您更容易学习基础知识(然后您可以在以后和/或生产中更安全地运行它)。 Cloud Shell已安装和更新所有内容。

如果您必须通过本地计算机运行此快速入门,我建议使用上面的第一个选项:" gcloud auth application-default login"。您需要为您的操作系统安装Google Cloud SDK。当您运行该命令时,它应该打开一个浏览器,系统将提示您登录您的Google Cloud帐户。这将授予您在本地运行脚本的权限。希望这有帮助!

答案 1 :(得分:3)

从本地计算机运行教程时,我也遇到相同的错误消息。我正在使用服务帐户(而不是“ gcloud auth应用程序默认登录名”),因为这是Google教程中推荐的首选方法。

但是,经过大量调查,我发现问题是由于Google文档中的错误而引起的(该文档似乎不是最新的)。

{'list_of_values': [{1: [{0: ['must be of string type'],
     1: ['must be of integer type']}]}]}

文档中的错误与说明的第4步有关。在GCP控制台的当前实现中,无法直接从“服务帐户密钥”页面设置角色。相反,您必须转到“ IAM和管理员”页面来设置“所有者”角色:

Setting up authentication
To run the client library, you must first set up authentication by creating a service 
account and setting an environment variable. Complete the following steps to set up 
authentication. For more information, see the GCP authentication documentation .

GCP CONSOLECOMMAND LINE
In the GCP Console, go to the Create service account key page.

1. GO TO THE CREATE SERVICE ACCOUNT KEY PAGE
2. From the Service account drop-down list, select New service account.
3. In the Service account name field, enter a name .
**4. From the Role drop-down list, select Project > Owner.**

以下文章“为Google BigQuery设置Google Cloud Service帐户缺少指南”提供了更多信息。本文是在BigQuery的上下文中编写的,但同样适用于Google数据存储区:

https://blog.openbridge.com/the-missing-guide-to-setting-up-google-cloud-service-accounts-for-google-bigquery-6301e509b232

答案 2 :(得分:0)

如果上述解决方案不起作用,请转到您的 firebase 控制台 点击设置图标,然后导航到

  1. 导航到服务帐户
  2. 点击生成新的私钥

并将 GOOGLE_APPLICATION_CREDENTIALS 变量设置为 json 文件路径 这对我有用:)