I have been facing problem to trigger lambda from cloudwatch rule with event pattern created from terraform.
Below is my terraform code:
resource "aws_cloudwatch_event_rule" "event_rule_pattern" {
name = "test-event-rule"
description = "${var.description}"
role_arn = "${var.execution_role}"
event_pattern = <<PATTERN
{
"source": [
"aws.ecs"
],
"detail-type": [
"ECS Task State Change"
],
"detail": {
"lastStatus": [
"STOPPED"
],
"taskDefinitionArn": [
"${data.aws_ssm_parameter.task_arn.value}"
]
}
}
PATTERN
tags = "app"
}
resource "aws_cloudwatch_event_target" "event_target_pattern" {
rule = "${element(aws_cloudwatch_event_rule.event_rule_pattern.*.name, 0)}"
arn = "${data.aws_ssm_parameter.special_alert_arn.value}"
}
Above cloudwatch rule is to trigger lambda on completion of ECS task. So far it is able to trigger cloudwatch event at completion of ECS task, but failed to invoke lambda.
After failure I was checking from aws ui console and just re-saved cloudwatch rule from aws ui console and it started working.
So not sure but looks like terraform is not able to configured cloudwatch rule target properly or I have done something wrong on my side.
Can some terraform/aws expert please help on this?