如何使用Deployment Manager启用GCP指定云服务API
通过Deployment Manager启用GCP服务API的实操方案
不需要手动提前在新项目里逐个开启API,直接在现有DM模板中声明服务启用资源即可,具体操作如下:
1. 确认待启用服务的正确标识
你提到的几个服务对应的API标识如下,注意不要写错名称:
- Cloud Scheduler:
cloudscheduler.googleapis.com - Pub/Sub:
pubsub.googleapis.com - BigQuery:
bigquery.googleapis.com - Cloud Storage(对象存储Bucket对应服务):
storage-api.googleapis.com,如果需要完整存储管控能力可额外添加storage-component.googleapis.com - Cloud Build:
cloudbuild.googleapis.com - Cloud Functions:
cloudfunctions.googleapis.com
建议显式声明两个基础依赖API避免异常:
deploymentmanager.googleapis.com、servicemanagement.googleapis.com,这两个是DM运行和服务启用能力的基础。
2. 在模板中添加API启用资源,配置部署依赖
使用DM内置的servicemanagement.services.enable资源类型定义API启用动作,必须将这类资源放在所有业务资源的最前面,且给后续业务资源配置显式依赖,避免DM并行创建资源时,API还没生效就开始创建业务资源触发报错。
示例模板片段(YAML格式,支持DM内置变量自动获取当前项目ID):
resources: # 批量定义待启用的API - name: enable-cloudscheduler type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: cloudscheduler.googleapis.com consumerId: projects/{{ env["project"] }} - name: enable-pubsub type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: pubsub.googleapis.com consumerId: projects/{{ env["project"] }} - name: enable-bigquery type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: bigquery.googleapis.com consumerId: projects/{{ env["project"] }} - name: enable-storage type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: storage-api.googleapis.com consumerId: projects/{{ env["project"] }} - name: enable-cloudbuild type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: cloudbuild.googleapis.com consumerId: projects/{{ env["project"] }} - name: enable-cloudfunctions type: gcp-types/servicemanagement-v1:servicemanagement.services.enable properties: serviceName: cloudfunctions.googleapis.com consumerId: projects/{{ env["project"] }} # 下方放置原有业务资源,所有资源都要加对应依赖,以下为Pub/Sub主题示例 - name: my-pubsub-topic type: gcp-types/pubsub-v1:projects.topics properties: topic: order-event-topic metadata: dependsOn: - enable-pubsub # 依赖上面定义的Pub/Sub API启用资源
如果用Jinja/Python模板编写DM配置,可以直接用循环批量生成API启用资源,减少冗余代码。
3. 部署前权限检查
执行部署操作的身份(个人账号、或DM使用的服务账号)需要拥有servicemanagement.services.enable权限,项目内置的Owner、Editor角色默认包含该权限,使用自定义角色的话提前加上对应权限即可。
API启用过程通常需要1-2分钟,DM会自动等待API启用资源创建完成后再执行后续依赖资源的部署,不需要手动加等待逻辑。配置完成后直接正常执行部署命令即可,不需要额外做其他手动操作。
内容的提问来源于stack exchange,提问作者Arghya Roy
相关产品推荐
相关产品推荐

