Terraform 不会在 cloudwatch 事件目标上添加日志组名称

Zha*_* Yi 3 amazon-web-services amazon-cloudwatch terraform

我创建一个规则,Cloudwatch并附加一个log group作为其目标Terraform

resource "aws_cloudwatch_event_target" "trigger_glue_job_lambda" {
  rule = "${aws_cloudwatch_event_rule.crawler.name}"
  target_id = "SendToLambda"
  arn = "${aws_lambda_function.trigger_glue_job.arn}"
}

resource "aws_cloudwatch_event_target" "log_glue_crawler_result" {
  rule = "${aws_cloudwatch_event_rule.crawler.name}"
  target_id = "LogCrawler"
  arn = "${aws_cloudwatch_log_group.grue_crawler_log_group.arn}"
}

resource "aws_cloudwatch_log_group" "grue_crawler_log_group" {
  name = "crawler_log"
  tags = {
    Application = "reddit_movies"
  }
}
Run Code Online (Sandbox Code Playgroud)

您会看到上面的配置包括一个log group资源定义和两个event target,一个用于日志组,另一个用于触发 lambda。以下是 aws cloudwatch 规则控制台中此配置的屏幕截图。

在此处输入图片说明

您会看到屏幕截图底部的目标正确显示了 lambda,但没有显示我创建的日志组的名称。相反,它显示*日志组名称的 。我想知道我的配置有什么问题。

小智 6

在检查了cloudwatch 日志组的arn属性的值后,由于某种原因,它在这种格式格式的末尾附加了一个星号arn:aws:logs:eu-west-1:12345678912:log-group:crawler_log:*
像这样更改代码以删除最后 2 个字符:

resource "aws_cloudwatch_event_target" "log_glue_crawler_result" {
  rule = "${aws_cloudwatch_event_rule.crawler.name}"  
  target_id = "LogCrawler"
  arn = "${substr(aws_cloudwatch_log_group.grue_crawler_log_group.arn,0,length(aws_cloudwatch_log_group.grue_crawler_log_group.arn) - 2)}"
}
Run Code Online (Sandbox Code Playgroud)