Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terraform example for configuring Cloudwatch Events for Lambda Function (Warm Callback Handler)

As part of deployment of Lambda Function using terraform i need to create a cloud watch event for warm call back event.

I am able to easily create it from front end but it's difficult for me to create it from back end as input_transformer configuration is needed.

Any example of that?

like image 546
Explorer Avatar asked Oct 22 '25 10:10

Explorer


1 Answers

The below is the configuration that i have used to create cloudwatch event for warm call back with input_transformer.

resource "aws_cloudwatch_event_rule" "flask-apis-cloudwatch-terraform" {
    name = "warm_call_back_flask_apis"
    description = "Keep Warm Callback function for flask-apis"
    schedule_expression = "rate(4 minutes)"
    role_arn = "${aws_iam_role.lambda_exec_flask.arn}"
}

resource "aws_cloudwatch_event_target" "flask-apis-cloudwatch-terraform-target" {
  rule      = "${aws_cloudwatch_event_rule.flask-apis-cloudwatch-terraform.name}"
  target_id = "${aws_lambda_function.flask-apis.function_name}"
  arn       = "${aws_lambda_function.flask-apis.arn}"
  input_transformer = {
    input_paths = {"detail-type"="$.detail-type","resources"="$.resources","detail"="$.detail","id"="$.id","source"="$.source","time"="$.time","region"="$.region","version"="$.version","account"="$.account"}

    input_template = <<INPUT_TEMPLATE_EOF
    {
        "time":<time>, 
        "detail-type": <detail-type>, 
        "source": <source>,
        "account": <account>, 
        "region": <region>,
        "detail": <detail>, 
        "version": <version>,
        "resources": <resources>,
        "id": <id>,
        "kwargs": {}
    }
    INPUT_TEMPLATE_EOF
  }

}

resource "aws_lambda_permission" "allow_cloudwatch_to_call_flask-apis" {
    statement_id = "AllowExecutionFromCloudWatch"
    action = "lambda:InvokeFunction"
    function_name = "${aws_lambda_function.flask-apis.arn}"
    principal = "events.amazonaws.com"
    source_arn = "${aws_cloudwatch_event_rule.flask-apis-cloudwatch-terraform.arn}"
}
like image 63
Explorer Avatar answered Oct 25 '25 22:10

Explorer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!