如何异步处理Google Cloud Deployment Manager并实现类AWS通知功能?
Google Cloud Deployment Manager 异步部署通知实现方案
可以实现类似AWS CloudFormation关联SNS的异步通知机制,但Deployment Manager本身没有内置的直接关联通知服务的功能,需要结合GCP的其他服务组合完成,核心思路是通过监控部署状态或审计日志触发通知流程。
方式一:基于Cloud Monitoring告警触发通知
- 步骤1:创建监控指标告警政策
- 目标指标选择
deploymentmanager.googleapis.com/deployment/state,该指标会返回部署的当前状态(SUCCESS/FAILED/IN_PROGRESS等)。 - 设置告警条件:当状态变为
SUCCESS或FAILED时触发告警。
- 目标指标选择
- 步骤2:配置通知渠道为Pub/Sub主题
- 在告警政策的通知设置中,选择已创建的Pub/Sub主题作为通知目标,告警触发时会将部署状态信息以JSON格式推送到该主题。
- 步骤3:用Cloud Functions处理消息并发送通知
- 创建Cloud Functions订阅上述Pub/Sub主题,编写函数逻辑解析消息中的部署ID、状态、时间等信息,再调用外部通知服务(如Slack、邮件、企业微信)发送通知。
- 示例Python函数片段:
import requests import json def send_notification(event, context): pubsub_message = json.loads(event['data'].decode('utf-8')) deployment_name = pubsub_message['resource']['labels']['deployment_name'] state = pubsub_message['metric']['labels']['state'] message = f"Deployment {deployment_name} completed with state: {state}" # 发送Slack通知示例 slack_webhook_url = "YOUR_SLACK_WEBHOOK_URL" requests.post(slack_webhook_url, json={"text": message})
方式二:基于Cloud Audit Logs触发通知
- 步骤1:导出Deployment Manager审计日志到Pub/Sub
- 进入Cloud Audit Logs控制台,为Deployment Manager服务配置日志导出规则,将
Admin Activity类型的日志导出到指定Pub/Sub主题。
- 进入Cloud Audit Logs控制台,为Deployment Manager服务配置日志导出规则,将
- 步骤2:用Cloud Functions解析日志并发送通知
- 订阅该Pub/Sub主题的Cloud Functions可以解析日志中的
protoPayload字段,提取部署操作的状态码(0表示成功,非0表示失败)、部署名称、操作时间等信息,再触发通知。 - 优势:能获取更详细的部署操作细节(如发起者、错误原因),适合需要排查故障的场景。
- 订阅该Pub/Sub主题的Cloud Functions可以解析日志中的
权限注意事项
- 确保Cloud Monitoring服务账号有向目标Pub/Sub主题发布消息的权限。
- 确保Cloud Functions服务账号有订阅Pub/Sub主题、读取日志以及调用通知服务的权限。
内容的提问来源于stack exchange,提问作者Jr Dna
相关产品推荐
相关产品推荐

