我有 2 个事件:
在事件桥/事件/event1/main.tf
module "event1" {
source = "../../rule"
name = "event1"
description = "event1"
schedule_expression = "cron(0 4 * * ? *)"
input = jsonencode({"job-type": "event1"})
cloudwatch_arn = module.targets.cloudwatch_arn
}
module "targets" {
source = "../../targets"
}
在事件桥/事件/event2/main.tf
module "event2" {
source = "../../rule"
name = "event2"
description = "event2"
schedule_expression = "cron(0 5 * * ? *)"
input = jsonencode({"job-type": "event2"})
cloudwatch_arn = module.targets.cloudwatch_arn
}
module "targets" {
source = "../../targets"
}
在事件桥/目标/main.tf
resource "aws_cloudwatch_log_group" "log_group_target" {
name = "/aws/events/${local.rule_name}"
}
resource "aws_sns_topic" "sns_target" {
name = local.rule_name
}
resource "aws_sns_topic_policy" "sns-target-policy" {
arn = aws_sns_topic.sns_target.arn
policy = data.aws_iam_policy_document.events_to_sns_topic_policy.json
}
data "aws_iam_policy_document" "events_to_sns_topic_policy" {
statement {
effect = "Allow"
actions = ["SNS:Publish"]
principals {
type = "Service"
identifiers = ["events.amazonaws.com"]
}
resources = [aws_sns_topic.sns_target.arn]
}
}
在事件桥/目标/变量.tf
locals {
rule_name = "scheduled-events"
}
在事件桥/目标/输出.tf
output "cloudwatch_arn" {
value = aws_cloudwatch_log_group.log_group_target.arn
}
output "sns_topic_arn" {
value = aws_sns_topic.sns_target.arn
}
在事件桥/规则/main.tf
resource "aws_cloudwatch_event_rule" "rule" {
name = var.name
description = var.description
schedule_expression = var.schedule_expression
}
resource "aws_cloudwatch_event_target" "cloud_watch_target" {
rule = local.rule_name
arn = var.cloudwatch_arn
}
resource "aws_cloudwatch_event_target" "sns_target" {
rule = local.rule_name
arn = var.sns_arn
input = var.input
}
在事件桥/规则/变量.tf
locals {
rule_name = "scheduled-events"
}
variable "name" {
description = "A name of the event bridge rule to be created"
type = string
}
variable "description" {
description = "A description of the event bridge rule to be created"
type = string
}
variable "input" {
description = "A message for the events to be processed by this rule"
type = any
}
variable "schedule_expression" {
description = "A scheduled time interval for the events to be processed"
type = any
}
variable "cloudwatch_arn" {
description = "Logging cloudwatch arn for the events to be processed"
type = any
}
如果我计划为每个事件创建另一个 cloudwatch 日志组和 sns 目标,并且应用时由于名称相同而出现错误,但我希望他们使用相同的 cloudwatch 日志组和 sns 目标..你知道如何我能做到吗?多谢!!