寻求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
相关产品推荐
相关产品推荐

