我开发了以下代码,用于自动启动/停止我的一些实例的任务,这些实例不需要一直运行,但需要在特定范围内运行。
这是我的代码:https://github.com/maartinpii/gcp-shst
我按照谷歌云平台指南创建了一个服务帐户(引用: https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.com/iam/docs/service-accounts#service_account_permissions ),因此我在项目 A 中创建了一个服务 SC-Auto ,然后在其他项目的 IAM 选项卡中创建它们并带来它是“项目所有者”角色。
注意:从我运行它的地方,我还执行了 gcloud auth service-account ...如上所述 Cross project management using service account
但是,当我执行代码时,出现以下情况:
当执行它时,调用我创建服务帐户的项目时,效果很好。
当执行它调用我设置项目所有者角色的任何其他项目时,它总是检索此错误
回溯(最近一次调用最后一次): 文件“gcp-shst.py”,第 45 行,位于 响应 = 请求.execute() 文件“/usr/lib/python2.7/site-packages/googleapiclient/_helpers.py”,第 130 行,位于positional_wrapper 中 返回包裹(*args,**kwargs) 文件“/usr/lib/python2.7/site-packages/googleapiclient/http.py”,第 842 行,执行中 引发 HttpError(resp, content, uri=self.uri) googleapiclient.errors.HttpError:https://www.googleapis.com/compute/v1/projects//zones/southamerica-east1-a/instances//start?alt=json 返回“需要'compute.instances.start'权限对于“项目//区域/southamerica-east1-a/instances/”">
所以现在我想知道是否可以使用相同的服务帐户在我配置它并赋予其正确权限的所有项目中执行功能,或者我是否需要为每个项目创建一个不同的服务帐户,或者如果我做错事了...
预先感谢您的帮助!
最佳答案
经过调试和分析,我发现我无法使用服务帐户操作的项目的名称与其ID不同(引用: https://cloud.google.com/resource-manager/docs/creating-managing-projects#Identifying projects )
因此,当我用 ID 替换项目名称时,它工作正常。
关于python - GCP 服务帐号跨项目角色和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505029/