【发布时间】:2021-04-25 16:24:49
【问题描述】:
我创建了一个 CloudWatch 事件规则来触发 lambda 函数按计划运行。但是,我希望规则使用 2 个不同的输入值运行。
例如:input1 是: {"namequery": "top-10-ip", "s3bucket": "stg-log", "query": "SELECT client_ip from ip_tables limit 10"}
而 input2 是:{"namequery": "countError", "s3bucket": "stg-log", "query": "SELECT error from error_logs"}
我的预期结果是这样的图像: expected result
我的 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
}
但是,听起来 Terraform 无法识别差异,它只创建了 1 个目标。
希望有人能帮助我,非常感谢!
【问题讨论】:
标签: amazon-web-services terraform