简体   繁体   English

使用 Terraform 中的不同输入为 lambda function 创建一个 cloudwatch 事件规则目标

[英]Create a cloudwatch event rule target to a lambda function with different inputs in Terraform

I created a CloudWatch event rule to trigger a lambda function to run in schedule.我创建了一个 CloudWatch 事件规则来触发 lambda function 按计划运行。 Howerver, I want the rule run with 2 different input values.但是,我希望规则使用 2 个不同的输入值运行。

Eg: input1 is: {"namequery": "top-10-ip", "s3bucket": "stg-log", "query": "SELECT client_ip from ip_tables limit 10"}例如:input1 是:{“namequery”:“top-10-ip”,“s3bucket”:“stg-log”,“query”:“SELECT client_ip from ip_tables limit 10”}

and input2 is: {"namequery": "countError", "s3bucket": "stg-log", "query": "SELECT error from error_logs"}并且输入2是:{“namequery”:“countError”,“s3bucket”:“stg-log”,“query”:“SELECT error from error_logs”}

My expected result is like this image: expected result我的预期结果是这样的图像:预期结果

My Terraform code:我的 Terraform 代码:

resource "aws_cloudwatch_event_rule" "athena_sender" {
  name                = "${var.app_name}-${var.env_name}-lambda-athena-sender"
  description         = "${var.app_name}-${var.env_name} athena sender"
  schedule_expression = var.options_athena_sender["schedule_expression"]
}

resource "aws_cloudwatch_event_target" "athena_sender1" {
  rule      = aws_cloudwatch_event_rule.athena_sender.name
  target_id = aws_lambda_function.athena_sender_function.id
  arn       = aws_lambda_function.athena_sender_function.arn
  input     = <<JSON
    {
      "namequery": "${var.options_athena_sender["namequery1"]}",
      "s3bucket": "${aws_s3_bucket.s3_logs.bucket}",
      "query": "${var.options_athena_sender["query1"]}"
    }
  JSON
}

resource "aws_cloudwatch_event_target" "athena_sender2" {
  rule      = aws_cloudwatch_event_rule.athena_sender.name
  target_id = aws_lambda_function.athena_sender_function.id
  arn       = aws_lambda_function.athena_sender_function.arn
  input     = <<JSON
    {
      "namequery": "${var.options_athena_sender["namequery2"]}",
      "s3bucket": "${aws_s3_bucket.s3_logs.bucket}",
      "query": "${var.options_athena_sender["query2"]}"
    }
  JSON

  depends_on = [aws_cloudwatch_event_target.athena_sender1]  // delay creation of the second athena sender CW event to prevent ConcurrentModificationException
}

However, it sounds like Terraform do not recognize the differences and it only create only 1 target.但是,听起来 Terraform 无法识别差异,并且仅创建 1 个目标。

Hope that anyone can help me, thank you so much!希望有人能帮助我,非常感谢!

This probably happens because you are using same target_id in both cases:这可能是因为您在两种情况下都使用相同的target_id

target_id = aws_lambda_function.athena_sender_function.id

Please change it to have different ids for different rules, eg:请更改它以针对不同的规则使用不同的 id,例如:

target_id = "${aws_lambda_function.athena_sender_function.id}1"

and

target_id = "${aws_lambda_function.athena_sender_function.id}2"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 通过 terraform 创建用于任务状态更改的 Cloudwatch 事件规则 - Create Cloudwatch event rule for task state change via terraform 我可以从该 function 中为 AWS lambda function 创建/删除 cloudwatch 事件规则吗? - Can I create/delete a cloudwatch event rule for an AWS lambda function from within that function? AWS Terraform CloudWatch规则作为Lambda触发器 - aws terraform cloudwatch rule as lambda trigger Cloudwatch 事件没有触发我的 lambda 函数,即使它是一个目标 - Cloudwatch event is not triggering my lambda function, even though it's a target 将参数传递给 AWS Cloudwatch 事件目标 lambda function - Pass parameters to AWS Cloudwatch event target lambda function 是否可以从CloudWatch为Lambda状态功能集创建计划规则 - Is it possible to create a Scheduled Rule from CloudWatch for a Lambda State Function Set 我可以通过 Terraform 将 CloudWatch 事件规则附加到“内置目标”吗? - Can I attach a CloudWatch event rule to a 'built-in target' via Terraform? 无法将 Lambda 目标添加到现有 CloudWatch 规则 - Cannot add a Lambda target to an existing CloudWatch rule Terraform 创建具有多个目标的 Cloudwatch 规则 - Terraform create a Cloudwatch rule with multiple targets terraform 计划:错误:尝试创建 cloudwatch 事件目标时,sqs_target 应该是一个列表 - terraform plan: error: sqs_target should be a list when trying to create a cloudwatch event target
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM