我开发了以下代码来自动执行某些实例的启动/停止任务,这些实例不需要一直运行,而是需要在特定范围内运行。
这是我的代码:https://github.com/maartinpii/gcp-shst
我按照Google Cloud Platform指南创建了一个服务帐户(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.com/iam/docs/service-accounts#service_account_permissions),因此我在Project A中创建了一个服务SC-Auto,然后在该帐户的IAM标签中创建了它们其他项目,并使其具有“项目所有者”角色。
注意:从运行它的位置,我还执行了gcloud auth服务帐户...如所述Cross project management using service account
但是,当我执行代码时,会出现以下情况:
在执行它时,从我创建服务帐户的地方调用项目,效果很好。
执行它从我设置了项目所有者角色的位置调用任何其他项目时,它总是会检索到此错误
回溯(最近通话最近): 文件“ gcp-shst.py”,第45行,在 响应= request.execute() 在positional_wrapper中的第130行,文件“ /usr/lib/python2.7/site-packages/googleapiclient/_helpers.py” 返回包装(* 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'”权限代表“ projects // zones / southamerica-east1-a / instances /'“>
所以现在我想知道是否可以使用相同的服务帐户在我为其配置并赋予其正确权限的所有项目中执行功能,或者是否需要为每个项目创建一个不同的服务帐户?我做错了事...
在此先感谢您的帮助!
答案 0 :(得分:1)
经过调试和分析,我发现我无法使用服务帐户进行操作的项目的名称与 ID (参考:https://cloud.google.com/resource-manager/docs/creating-managing-projects#Identifying projects)
因此,当我用ID替换项目名称时,它可以正常工作。