首页 > 解决方案 > 从度量警报触发 EventBridge 规则:测试事件模式匹配但从未调用规则

问题描述

我正在尝试连接一个 lambda 以在监视 SQS 队列的 ApproximateNumberOfMessagesVisible 属性的警报触发时执行。我从一个超通用的事件模式开始:

{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"]
}

将其连接起来以调用一个 lambda,该 lambda 刚刚console.log对它收到的事件执行 a,然后我向队列发送了一条消息。指标进入警报状态,根据它自己的指标调用规则,然后 lambda 运行。我得到的输出看起来像这样(删除了警报配置,因为我认为它不相关,如果我错了,请告诉我,我会重新编辑它):

{
  "version": "0",
  "id": "a7c2e5fc-edcc-43ce-0a75-125ba3326d4e",
  "detail-type": "CloudWatch Alarm State Change",
  "source": "aws.cloudwatch",
  "account": "XXXX",
  "time": "2021-10-26T14:00:37Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:cloudwatch:us-east-1:XXXX:alarm:test-alarm"
  ],
  "detail": {
    "alarmName": "test-alarm",
    "state": {
      "value": "ALARM",
      "reason": "Threshold Crossed: 1 datapoint [1.0 (26/10/21 13:59:00)] was greater than or equal to the threshold (1.0).",
      "reasonData": "{\"version\":\"1.0\",\"queryDate\":\"2021-10-26T14:00:37.095+0000\",\"startDate\":\"2021-10-26T13:59:00.000+0000\",\"unit\":\"Count\",\"statistic\":\"Average\",\"period\":60,\"recentDatapoints\":[1.0],\"threshold\":1.0,\"evaluatedDatapoints\":[{\"timestamp\":\"2021-10-26T13:59:00.000+0000\",\"sampleCount\":1.0,\"value\":1.0}]}",
      "timestamp": "2021-10-26T14:00:37.099+0000"
    }
  }
}

基于此,我编辑了我的原始模式,所以现在是:

{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"],
  "detail": {
    "alarmName": ["test-alarm"],
    "state": {
      "value": ["ALARM"]
    }
  }
}

我已经测试了这种模式,aws events test-event-pattern然后我回来了true,所以模式似乎是正确的。

然后我清除了队列,等待警报重置,再等几分钟确定,然后向我的队列发送消息。这次指标进入警报状态,但规则的指标显示调用为零,并且 lambda 没有运行。

今天早上我已经将这个结果复制了大约六次,但我看不出问题出在哪里。我在这里做错了什么?

标签: amazon-web-servicesamazon-cloudwatchaws-event-bridge

解决方案


推荐阅读