多账号场景下GCP跨账户预算告警触发Cloud Function成本控制方案咨询
该需求可正常实现,无需额外搭建组织架构,仅需完成对应的IAM权限配置即可,具体操作步骤如下:
前置准备
先确认你自有账号下的宿主项目资源已完成部署且同账号下运行正常:
- 已开发完成的Python版本成本管控Cloud Function
- 绑定了Cloud Function触发规则的Pub/Sub主题(下文记为
跨账号预算告警主题)
步骤1:配置Pub/Sub主题跨账号发布权限
你需要在宿主项目的跨账号预算告警主题IAM配置中,添加如下成员并授予roles/pubsub.publisher权限:
- GCP全局固定预算告警服务账号:
billing-notifications@system.gserviceaccount.com,所有GCP账号的预算告警触发时都会使用该身份发送Pub/Sub消息 - 外部账号用于配置预算规则的用户/服务账号(如果外部账号使用自定义服务账号管理预算配置)
如果使用gcloud命令行配置,参考命令如下:
gcloud pubsub topics add-iam-policy-binding 跨账号预算告警主题名称 \ --member="serviceAccount:billing-notifications@system.gserviceaccount.com" \ --role="roles/pubsub.publisher"
步骤2:配置外部账号预算告警规则
指导外部账号在其自身的账单预算设置中,将告警通知的Pub/Sub目标配置为你宿主项目中主题的完整资源ID,格式为:projects/[你的宿主项目ID]/topics/[跨账号预算告警主题名称]
步骤3:配置Cloud Function跨账号操作权限
由于Cloud Function需要执行禁用外部账号项目计费的操作,你需要将Cloud Function的运行时服务账号添加到外部账号对应项目的IAM成员中,并授予roles/billing.admin角色:
- Cloud Function运行时服务账号默认格式为:
[你的宿主项目ID]@appspot.gserviceaccount.com,若你使用自定义服务账号运行Cloud Function,替换为对应服务账号即可
验证操作
可让外部账号临时调低预算阈值触发测试告警,确认Pub/Sub可正常接收跨账号消息、Cloud Function可正常执行成本管控逻辑即可。
内容的提问来源于stack exchange,提问作者DaveEnVelo
相关产品推荐
相关产品推荐

