You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Pub/Sub触发Cloud Function校验异常触发邮件告警的问题

问题原因

现有代码通过[key]强制读取字典中可能不存在的键:当Pub/Sub消息未携带attributes字段,或者缺少transaction_id/refined_paths属性时,会在变量赋值阶段直接抛出异常,无法执行后续的非空校验逻辑,这是运行报错的核心原因。

修复后实现代码

使用dict.get()方法安全取值,键不存在时返回默认空值,再统一做非空校验即可满足需求:

import base64

def hello_pubsub(event, context):
    # 安全读取消息正文,不存在则默认解码为空字符串
    pubsub_message = base64.b64decode(event.get('data', b'')).decode('utf-8')
    # 安全读取属性集合,不存在则默认为空字典
    pubsub_attributes = event.get('attributes', {})
    # 安全读取指定属性,不存在则默认为空字符串
    transaction_id = pubsub_attributes.get('transaction_id', '')
    refined_paths = pubsub_attributes.get('refined_paths', '')

    # 非空校验,任意字段为空则抛出异常触发函数执行失败
    if not all([pubsub_message, transaction_id, refined_paths]):
        raise RuntimeError("消息正文、transaction_id、refined_paths不得为空")
邮件告警配置

无需额外开发代码,通过GCP原生告警规则即可实现函数失败自动发邮件:

  • 进入目标Cloud Function的「告警」标签页,点击「创建告警策略」
  • 指标选择Cloud Function > 函数 > 执行失败次数,筛选当前的目标函数
  • 阈值配置为1,统计周期选择1分钟
  • 通知渠道选择「电子邮件」,添加告警接收邮箱即可。函数执行失败时会自动触发邮件推送。

内容的提问来源于stack exchange,提问作者Akshay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 09:06:03