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

GCP Cloud Function调用update_alert_policy出现意外参数name报错如何解决

错误原因

monitoring_v3客户端的update_alert_policy方法和create_alert_policy的入参规则不同:

  • 创建告警时name参数指代项目资源路径,是独立入参
  • 更新告警时不需要单独传name参数,需要将告警策略的完整资源路径写入AlertPolicy对象的name属性中,同时必须指定update_mask参数声明需要更新的字段,避免未定义的字段被覆盖清空。

修正后代码示例

import json
from google.cloud import monitoring_v3

client_alert = monitoring_v3.AlertPolicyServiceClient()

# 告警策略的完整资源路径
policy_full_name = 'projects/my_project/alertPolicies/1234555665'
filter = "some_filters"
alert_policy = {
    "name": policy_full_name, # 把资源路径写到policy的name字段里
    "conditions":[
        {
            "conditionAbsent":{
                "duration": "1800s",
                "filter": '{}'.format(filter)
            }, 
            "displayName":"test_name"
        }
    ], 
    "displayName":"test_name", 
    "combiner":"OR"
}
policy = monitoring_v3.AlertPolicy.from_json(json.dumps(alert_policy))

# 声明需要更新的字段,多个字段用逗号分隔,使用蛇形命名规则
update_mask = monitoring_v3.types.field_mask_pb2.FieldMask(
    paths=["display_name", "conditions", "combiner"]
)

# 调用更新方法,不需要传name参数,传入policy和update_mask即可
client_alert.update_alert_policy(alert_policy=policy, update_mask=update_mask)

注意事项

  • update_mask的字段名要使用蛇形命名(比如display_name而不是displayName),和API返回的字段命名规则一致
  • 如果只需要更新部分字段,只需要把对应字段名加入paths列表即可,不需要更新的字段不会被覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:36:03