You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求GCP服务身份创建Bash命令的对应Python代码(代码报错)

问题:将GCP的gcloud beta services identity create转换为Python代码时遇到属性错误

原始Bash命令

用于创建GCP服务身份的Bash命令:

gcloud beta services identity create --service=$api --project=$project_id

尝试的Python代码及报错

尝试了以下Python代码,但抛出属性错误:

def generateServiceIdentity(self, services):
        service = discovery.build(
            'serviceusage', 'v1', credentials=self.credentials)
        
        request = service.services().generateServiceIdentity(parent=services)
        response = request.execute()
        return response

报错信息:

Exception occured:'Resource' object has no attribute 'generateServiceIdentity' while trying to executing ..

解决方案

1. 使用Service Usage API的beta版本

generateServiceIdentity是beta阶段的API方法,仅存在于serviceusage的v1beta1版本中,你之前使用的v1稳定版没有这个方法。

2. 修正parent参数格式

parent参数需要遵循projects/{project_id}/services/{service_name}的格式,不能直接传入服务名或项目ID。

修正后的完整代码

def generateServiceIdentity(self, project_id, service_name):
        # 使用v1beta1版本的Service Usage API
        service = discovery.build(
            'serviceusage', 'v1beta1', credentials=self.credentials)
        
        # 构造正确的parent路径
        parent = f"projects/{project_id}/services/{service_name}"
        request = service.services().generateServiceIdentity(parent=parent)
        response = request.execute()
        return response

补充说明

  • 调用时需要传入项目ID和具体的服务名(比如iam.googleapis.com),而不是之前的services参数。
  • 确保你的GCP账号拥有roles/serviceusage.serviceIdentityAdmin权限,否则会触发权限错误。

内容的提问来源于stack exchange,提问作者Avg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:20:35