Terraform:将SEARCH表达式与CloudWatch Alarms一起使用

问题描述

我已经查看了this个问题,该问题并没有太大帮助,所以就这样...

我有很多Lambda函数,如果有问题,我想监视它们并触发CloudWatch警报。 Lambda函数实际上以环境名称为前缀,即env-1-function-1env-1-function-2env-2-function-1等。

这些环境是独立的,即env1的cloudwatch警报设置与env2无关。为此,我开始研究SEARCH表达式。

这是我的警报:

resource "aws_cloudwatch_metric_alarm" "lambda_average_duration" {
  alarm_name          = "${local.env_prefix}-alarm-lambda_average_duration"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = "1"
  threshold           = "40000"
  alarm_description   = "This alarm monitors lambda average duration and triggers if the average of durations rise above 40 seconds."
  alarm_actions       = [aws_sns_topic.alarms_topic.arn]

  metric_query {
    id = "e1"
    expression = "SEARCH('{AWS/Lambda,FunctionName} MetricName=\"Duration\" FunctionName=${local.env_prefix}','Maximum',60000)"
    label = "Function Name filter"
    return_data = true
  }
}

env_prefix将为env-1的位置。在为指标绘制图表时,这在AWS控制台中完全可以正常工作。

CW Console

现在,当我运行Terraform时,似乎出现了一个问题,即“更新度量标准警报失败:ValidationError:期间不能为空”,但是在提供metric_query时对此according to the Terraform documentation您可能没有指定期限...

我是否有一种具体方法来限制按环境(名称过滤器)过滤我的Lambda指标,而不是在整个帐户中使用Lambda函数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)