为 Lambda 函数(暖回调处理程序)配置 Cloudwatch 事件的 Terraform 示例

Exp*_*rer 3 aws-lambda terraform

作为使用 terraform 部署 Lambda 函数的一部分,我需要为热回调事件创建一个云监视事件。

我可以轻松地从前端创建它,但由于需要 input_transformer 配置,所以我很难从后端创建它。

有这样的例子吗?

Exp*_*rer 6

下面是我用来创建 cloudwatch 事件以使用 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}"
}
Run Code Online (Sandbox Code Playgroud)