如何创建启用服务管理API的Google Cloud项目?

3
我们正在代表用户在Google Cloud上部署我们的软件(使用OAuth2)。我们已经成功地自动化了大部分,但有一个问题还未解决。
创建项目可通过 https://godoc.org/google.golang.org/api/cloudresourcemanager/v1#ProjectsService.Create 来完成。
启用所需的API(计算、存储等)可通过 google.golang.org/api/servicemanagement/v1#ServicesService.Enable 进行操作(由于 Stack Overflow 的限制,无法发布完整链接)。
创建实例可通过 google.golang.org/api/compute/v1#InstancesService.Insert来完成。
缺少的是第1步和第2步之间的过程:为了使用“服务管理API”来启用所需的API,我们需要在项目中启用“服务管理API”本身(多么具有讽刺意味)。我希望有一种方法可以在创建时就开启某些API,也许可以使用cloudresourcemanager或者 https://godoc.org/google.golang.org/api/deploymentmanager/v2,但目前为止我还没有找到。
因此,重新陈述一下:有人知道是否可以(使用Go)创建一个Google Cloud项目,并在创建时就启用某些特定的Google Cloud API吗?
2个回答

0

0

是的,谢谢。最终我注意到了,与文档所说的相反,我不需要显式启用API来使用它(请参见https://camlistore-review.googlesource.com/c/9906/4提交消息的末尾)。你是在说我不应该默认情况下期望servicemanagement继续工作,而应该使用serviceuser吗? - mpl
这对我没用。首先,在文档中没有描述"Enable"方法的"name"参数。在源JSON中,可以找到"A valid path would be:\n- /v1/projects/my-project/services/servicemanagement.googleapis.com:enable",但是必须传递类似"projects/my-project/services/servicemanagement.googleapis.com"的内容。但是当我尝试启用服务管理API时,我收到以下响应:googleapi:错误403:Google服务用户API尚未在项目xxxx中使用,或已禁用。 - TvE
我尝试了gcloud cli工具,它可以很好地处理启用。查看它生成的HTTP,它使用的不是像/v1/project/<proj-id>/services/<service>:enable这样的URL,而是只使用/v1/services/<service>:enable,并将项目ID作为"consumerId"字段传递到正文中。我通过将consumerId内容传递给Do()方法来欺骗ProjectsServicesService.Enable方法执行该操作。看起来库需要一些修复... - TvE
@TvE 嗨,我也遇到了同样的问题:错误403:Google服务用户API未在项目中使用。不过我是用Python做的。你解决了吗? - user7192474
尝试使用Service Usage API:https://cloud.google.com/service-usage/docs/reference/rest/ - Rob Kochman
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接