Amazon web services 配置CloudWatch事件以使用Terraform将输入发送到Lambda函数

Amazon web services 配置CloudWatch事件以使用Terraform将输入发送到Lambda函数,amazon-web-services,terraform,amazon-cloudwatch,terraform-provider-aws,Amazon Web Services,Terraform,Amazon Cloudwatch,Terraform Provider Aws,我想将CloudWatch事件配置为使用Terraform向Lambda函数发送输入。 我使用了以下脚本来执行此操作: resource "aws_cloudwatch_event_rule" "aa-rule-event" { count = "${var.count}" name = "${var.application_name}-${element(var.names, count.index)}" descripti

我想将CloudWatch事件配置为使用Terraform向Lambda函数发送输入。 我使用了以下脚本来执行此操作:

resource "aws_cloudwatch_event_rule" "aa-rule-event" {
  count               = "${var.count}"
  name                = "${var.application_name}-${element(var.names, count.index)}"
  description         = "${element(var.descriptions, count.index)}"
  schedule_expression = "${element(var.cron-expressions, count.index)}"
  is_enabled          = "${element(var.rule-status-states, count.index)}"
}

resource "aws_cloudwatch_event_target" "aa-rule-target" {
  count     = "${var.count}"
  rule      = "${var.application_name}-${element(var.names, count.index)}"
  target_id = "CloudWatchToLambda"
  arn       = "arn:aws:lambda:${var.aws_region}:${var.aws_account_number}:function:${var.application_name}-${element(var.target-lambda-function, count.index)}"
}

我需要通过这个CloudWatch事件向目标Lambda提供一个输入。我知道可以配置输入,但如何在Terraform中配置

aws\u cloudwatch\u event\u target资源采用一个可选选项,该选项可以在调用Lambda函数时将一个JSON blob传递给与有效负载等效的目标

resource "aws_cloudwatch_event_rule" "aa-rule-event" {
  count               = "${var.count}"
  name                = "${var.application_name}-${element(var.names, count.index)}"
  description         = "${element(var.descriptions, count.index)}"
  schedule_expression = "${element(var.cron-expressions, count.index)}"
  is_enabled          = "${element(var.rule-status-states, count.index)}"
}

resource "aws_cloudwatch_event_target" "aa-rule-target" {
  count     = "${var.count}"
  rule      = "${var.application_name}-${element(var.names, count.index)}"
  target_id = "CloudWatchToLambda"
  arn       = "arn:aws:lambda:${var.aws_region}:${var.aws_account_number}:function:${var.application_name}-${element(var.target-lambda-function, count.index)}"
  input = <<JSON
{
  "foo": {
    "bar": [
      1,
      2
    ]
  }
}
JSON
}
资源“aws\u cloudwatch\u事件\u规则”“aa规则事件”{
count=“${var.count}”
name=“${var.application\u name}-${element(var.names,count.index)}”
description=“${element(var.descriptions,count.index)}”
schedule_expression=“${element(var.cron-expressions,count.index)}”
是否启用了\=“${element(var.rule-status-states,count.index)}”
}
资源“aws\u cloudwatch\u事件\u目标”“aa规则目标”{
count=“${var.count}”
rule=“${var.application\u name}-${element(var.names,count.index)}”
target_id=“CloudWatchToLambda”
arn=“arn:aws:lambda:${var.aws\u region}:${var.aws\u account\u number}:函数:${var.application\u name}-${element(var.target-lambda-function,count.index)}”

input=aws\u cloudwatch\u event\u target
资源采用一个可选选项,该选项可以在调用Lambda函数时将一个JSON blob传递给与有效负载等效的目标

resource "aws_cloudwatch_event_rule" "aa-rule-event" {
  count               = "${var.count}"
  name                = "${var.application_name}-${element(var.names, count.index)}"
  description         = "${element(var.descriptions, count.index)}"
  schedule_expression = "${element(var.cron-expressions, count.index)}"
  is_enabled          = "${element(var.rule-status-states, count.index)}"
}

resource "aws_cloudwatch_event_target" "aa-rule-target" {
  count     = "${var.count}"
  rule      = "${var.application_name}-${element(var.names, count.index)}"
  target_id = "CloudWatchToLambda"
  arn       = "arn:aws:lambda:${var.aws_region}:${var.aws_account_number}:function:${var.application_name}-${element(var.target-lambda-function, count.index)}"
  input = <<JSON
{
  "foo": {
    "bar": [
      1,
      2
    ]
  }
}
JSON
}
资源“aws\u cloudwatch\u事件\u规则”“aa规则事件”{
count=“${var.count}”
name=“${var.application\u name}-${element(var.names,count.index)}”
description=“${element(var.descriptions,count.index)}”
schedule_expression=“${element(var.cron-expressions,count.index)}”
是否启用了\=“${element(var.rule-status-states,count.index)}”
}
资源“aws\u cloudwatch\u事件\u目标”“aa规则目标”{
count=“${var.count}”
rule=“${var.application\u name}-${element(var.names,count.index)}”
target_id=“CloudWatchToLambda”
arn=“arn:aws:lambda:${var.aws\u region}:${var.aws\u account\u number}:函数:${var.application\u name}-${element(var.target-lambda-function,count.index)}”

input=我尝试了这个,但似乎无法在lambda函数(用Go编写)中检索输入值。它在上下文中的某个位置吗?哦,天哪!我的func处理程序签名错误--输入作为处理程序的第二个参数输入(不在上下文中),但它必须是正确的类型!我最初将events.SNSEvent作为类型(更典型),但在本例中,我使用的是自定义类型。我尝试了此操作,但似乎无法检索lambda函数中的输入值(用Go编写)。它在上下文中的某个位置吗?哦,天哪!我的func处理程序签名有误——输入作为处理程序的第二个参数(不在上下文中),但它必须是正确的类型!我最初使用events.SNSEvent作为类型(更典型),但在本例中我使用的是自定义类型。