GCP Cloud Data Transfer 如何配置Slack、邮件等运行状态通知?
GCP Storage Transfer Service 状态通知落地方案
下面是两种无额外复杂依赖的可实现方案,适配你从Azure到GCP的文件传输场景:
方案1:审计日志触发方案(生产环境首选,稳定性高)
- 第一步开启STS审计日志:在GCP审计日志配置页,找到
Storage Transfer Service服务,启用DATA_READ、DATA_WRITE级别的日志采集 - 第二步配置日志路由:创建新的日志接收器,过滤规则填
resource.type="transfer_job" AND (protoPayload.methodName="google.storagetransfer.v1.StorageTransferService.RunTransferJob" OR resource.labels.transfer_job_status=*),将命中的日志推送到自定义的Pub/Sub主题 - 第三步写通知逻辑:创建Cloud Function绑定上述Pub/Sub主题,函数内根据日志内容判断任务状态:
- 匹配到任务启动日志,提取任务ID、源Azure存储容器、目标GCS桶信息,调用Slack webhook推送启动通知
- 匹配到日志中
status: SUCCESS字段,推送传输成功通知,可附加传输文件数、总大小等元数据 - 匹配到日志中
error字段,直接提取报错信息推送异常通知
若需邮件通知,可在函数内直接调用SMTP接口,或使用GCP内置邮件服务实现
方案2:轻量轮询方案(适合临时场景,配置量小)
- 用Cloud Scheduler创建定时触发规则(频率可按你任务运行时长设置,比如15分钟一次),触发一个简单的脚本/Cloud Function
- 脚本内调用STS的查询接口拉取任务最新状态,和上一次缓存的状态做对比,状态发生变更时触发对应通知
- 核心查询命令参考:
gcloud transfer jobs describe <你的任务ID> --format="json(latestOperationName, status, transferSpec)",直接解析返回的JSON内容即可
你之前Pub/Sub方案失败的常见排查点
- 未开启STS的审计日志,没有事件输入到Pub/Sub
- 日志过滤规则配置错误,无法匹配到STS的状态变更事件
内容的提问来源于stack exchange,提问作者Kivas
相关产品推荐
相关产品推荐

