【问题标题】:Invalid constructor input for UpdateAlertPolicyRequestUpdateAlertPolicyRequest 的构造函数输入无效
【发布时间】:2021-09-17 15:24:55
【问题描述】:

我正在尝试使用 Cloud Functions 更新警报策略。我有以下几行代码:

filter = "resource.type = \"l7_lb_rule\" AND metric.type = \"logging.googleapis.com/user/stuff_here\"")
alert_policy = {"conditions":[{"condition_absent":{"duration": '1800s',"filter": '{}'.format(filter)}, "displayName":'test'}], "displayName":'test'), "combiner":"OR"}
policy = monitoring_v3.AlertPolicy.from_json(json.dumps(alert_policy))
client_alert.update_alert_policy(policy)

我正在使用 API 资源管理器运行相同的更新并且它正在运行。然而云函数返回这个错误TypeError: Invalid constructor input for UpdateAlertPolicyRequest: display_name: "test"

我也想知道我应该在哪里传递我想要更新的警报的名称。我尝试将名称作为参数或 alert_policy 对象传递,但它总是返回某种错误。

【问题讨论】:

    标签: python google-cloud-monitoring protocol-buffers


    【解决方案1】:

    问题是你作为update_alert_policy 函数的参数传递了一些东西,正如你在库的source code 中看到的那样,它被认为是UpdateAlertPolicyRequest,第一个位置参数。您需要使用 alert_policy 参数来提供您的信息,例如:

    # indicate every field you want to update and provide
    # the corresponding values in the policy definition
    mask = field_mask.FieldMask(paths=['display_name', 'combiner', 'conditions'])
    policy = monitoring_v3.AlertPolicy(
        name='your_policy_name',
        display_name='test',
        combiner='OR',
        conditions=[
            monitoring_v3.types.AlertPolicy.Condition(
                display_name='test',
                condition_absent=monitoring_v3.types.AlertPolicy.Condition.MetricAbsence(
                    duration='1800s',
                    filter='resource.type = "l7_lb_rule" AND metric.type = "logging.googleapis.com/user/stuff_here"'
                )
            )
        ]
    )
    client.update_alert_policy(alert_policy=policy, update_mask=mask)
    

    该库提供了一些snippets 可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多