Terraform 地形-aws\u云\u监视\u日志\u度量\u过滤器

Terraform 地形-aws\u云\u监视\u日志\u度量\u过滤器,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,有没有人有在cloudwatch日志上设置度量过滤器的经验?想知道我是否在Terraform中发现了一只虫子 这就是我要做的 resource "aws_cloudwatch_log_metric_filter" "AWS_Console_Login" { name = "${var.aws_account_id}_Console_Login_Failure" pattern = "{ ($.eventName = ConsoleLogin) &

有没有人有在cloudwatch日志上设置度量过滤器的经验?想知道我是否在Terraform中发现了一只虫子

这就是我要做的

resource "aws_cloudwatch_log_metric_filter" "AWS_Console_Login" {
  name           = "${var.aws_account_id}_Console_Login_Failure"
  pattern        = "{ ($.eventName = ConsoleLogin) && ($.errorMessage = "Failed authentication") }"
  log_group_name  = "${var.aws_cloudtrail_name}"  

  metric_transformation {
    name      = "${var.aws_account_id}_Console_Login_Failure"
    namespace = "AccountMonitoring${var.aws_account_id}"
    value     = "1"
  }
}
当我运行Terraform应用或验证时,我得到了这个响应

错误:在157:19解析cloudwatch.tf时出错:应为嵌套对象:LBRACE get:ASSIGN

需要澄清的是,157:19与包含log_group_name的代码行相关,其中19位于=符号之前

然而,如果我删除日志组,我认为这与我的模式有关。。然后运行一个我得到的验证

aws_cloudwatch_log_metric_filter.aws_Console_Login::无效或未知密钥:失败

我对AWS过滤模式的要求是否过高

谢谢
斯蒂芬

试着取消你的报价。这是一个语法错误。问题不在
log\u group\u name
行。在它上面的那个

resource "aws_cloudwatch_log_metric_filter" "AWS_Console_Login" {
  name           = "${var.aws_account_id}_Console_Login_Failure"
  pattern        = "{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failed authentication\") }"
  log_group_name  = "${var.aws_cloudtrail_name}"  

  metric_transformation {
    name      = "${var.aws_account_id}_Console_Login_Failure"
    namespace = "AccountMonitoring${var.aws_account_id}"
    value     = "1"
  }
}

这似乎很好。你应该看看。这是Terraform Visual Studio代码插件的一部分,它帮助我找到了错误所在。

谢谢Brandon!!我正在使用Visual Studio代码和Terraform(语法突出显示),无法使tflint正常工作,但看起来确实像我需要的,我必须弄清楚为什么它不为我注册。