我的目标是做一个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.
所以问题仍然存在。
答案 0 :(得分:1)
您可以为服务帐户分配特权,以执行Google Cloud中的几乎所有操作。您碰到了一些您无法碰到的东西之一。
问题是您的项目不属于Organization
的一部分(您没有父项)。您的解决方案是通过Google Cloud Console设置组织或创建项目。注意:我不建议通过软件创建项目。您还需要设置结算信息才能执行任何有用的操作。
Google Cloud有两种类型的凭据:用户凭据和服务帐户凭据。您不能将用户帐户凭据嵌入到应用程序中。使用OAuth 2.0在登录/身份验证过程中以交互方式创建用户帐户凭据。
还有其他类型的对云服务的访问,例如API密钥,但这不适用于您的问题。