使用不带服务帐户凭据的python在Google Cloud中创建新项目

时间:2018-12-10 20:45:51

标签: python-2.7 google-cloud-platform google-oauth google-cloud-python

我的目标是做一个pythonic自动化的Google Cloud项目经理。只是测试了Tensorflow和其他模型。即使我可以完全访问项目中的培训,部署和测试模型,也无法进行任何新项目,因为我通过以下方式获得了服务帐户的身份验证:

google.oauth2.service_account.Credentials.from_service_account_file("thisisakey.json")

但是据我了解,服务帐户是项目绑定的,因此使用它创建新项目会引发错误是完全正确的。实际上确实如此:

googleapiclient.discovery.build("cloudresourcemanager", "v1", cache_discovery=False)

与:

Service accounts cannot create project without a parent.

因此,为此项目创建/查找“父级”或登录功能更强大的帐户都可以解决此问题。但是我无法弄清楚它们。还有其他要下载并嵌入python的凭证类型吗?我可以从python创建一个项目吗?我检查过的所有内容都已使用2年以上,而且似乎已经过时了(那时当时无法通过API创建项目)

更新: 我尝试使用由我工作的公司组成的组织上的项目正文上的“父代”标志创建一个项目。即使此服务帐户具有“所有者”和“组织管理员”角色,创建请求也会失败并显示以下内容:

 Encountered 403 Forbidden with reason "forbidden"
 User is not authorized.

所以问题仍然存在。

1 个答案:

答案 0 :(得分:1)

您可以为服务帐户分配特权,以执行Google Cloud中的几乎所有操作。您碰到了一些您无法碰到的东西之一。

问题是您的项目不属于Organization的一部分(您没有父项)。您的解决方案是通过Google Cloud Console设置组织或创建项目。注意:我不建议通过软件创建项目。您还需要设置结算信息才能执行任何有用的操作。

Google Cloud有两种类型的凭据:用户凭据和服务帐户凭据。您不能将用户帐户凭据嵌入到应用程序中。使用OAuth 2.0在登录/身份验证过程中以交互方式创建用户帐户凭据。

还有其他类型的对云服务的访问,例如API密钥,但这不适用于您的问题。

Quickstart Using Organizations