terraform中是否有任何特定的资源标记来在eventbridge中创建规则
e、 g.我们在cloudwatch中有一个事件规则的资源标签terraform中是否有任何特定的资源标记来在eventbridge中创建规则,terraform,terraform-provider-aws,terraform-template-file,Terraform,Terraform Provider Aws,Terraform Template File,e、 g.我们在cloudwatch中有一个事件规则的资源标签 aws\u cloudwatch\u event\u rule您将需要使用的组合来匹配您要使用EventBridge处理的事件,并转发到另一个EventBridge事件总线或类似Lambda的东西,后者可以直接处理事件,或者转发到SQS队列,在该队列中,事件可以由消费者 这是一个完全通用的模块: main.tf: # ----------------------------------------------------------
aws\u cloudwatch\u event\u rule
您将需要使用的组合来匹配您要使用EventBridge处理的事件,并转发到另一个EventBridge事件总线或类似Lambda的东西,后者可以直接处理事件,或者转发到SQS队列,在该队列中,事件可以由消费者
这是一个完全通用的模块:
main.tf:
# ------------------------------------------------------------------------------
# CREATE CLOUDWATCH RULES FOR EACH LOGICAL ROUTE TO MATCH EVENTS OF INTEREST
# ------------------------------------------------------------------------------
resource "aws_cloudwatch_event_rule" "captures" {
for_each = var.event_routes
name = replace(replace(each.key, "[^\\.\\-_A-Za-z0-9]+", "-"), "_", "-")
description = each.value.description
event_pattern = jsonencode({
"detail-type" = each.value.event_names
})
}
# ------------------------------------------------------------------------------
# CONFIGURE EACH RULE TO FORWARD MATCHING EVENTS TO THE CORRESPONDING TARGET ARN
# ------------------------------------------------------------------------------
resource "aws_cloudwatch_event_target" "route" {
for_each = var.event_routes
target_id = each.key
rule = aws_cloudwatch_event_rule.captures[each.key].name
arn = each.value.target_arn
}
变量.tf:
variable "event_routes" {
description = "A map from a meaningful operator shorthand to the target ARN and list of the event names that CloudWatch should forward to them."
type = map(object({
description = string
event_names = list(string)
target_arn = string
}))
/*
event_routes = {
forward_to_kpi_tracker = {
description = "Forward events to KPI tracker"
event_names = [
"UserSignedUp",
"UserWatchedLessonVideo",
]
target_arn = "arn:aws:events:ca-central-1:000000000000:event-bus/default"
}
}
*/
}
产出.tf:
output "event_rule_name" {
value = { for route_shorthand, route_details in var.event_routes :
route_shorthand => aws_cloudwatch_event_rule.captures[route_shorthand].name
}
}
output "event_rule_arn" {
value = { for route_shorthand, route_details in var.event_routes :
route_shorthand => aws_cloudwatch_event_rule.captures[route_shorthand].arn
}
}
目标可以是以下任一项:
- EC2实例
- SSM运行命令
- SSM自动化
- AWS Lambda函数
- Amazon Kinesis数据流中的数据流
- Amazon Kinesis数据消防软管中的数据交付流
- 亚马逊ECS任务
- AWS阶跃函数状态机
- AWS批处理作业
- AWS代码构建项目
- AWS代码管道中的管道
- 亚马逊检查员评估模板
- 亚马逊SNS主题
- Amazon SQS队列,包括FIFO队列
- 另一个AWS帐户的默认事件总线
您是否确定terraform支持“另一个AWS帐户的默认事件总线”作为目标。因为从他们的医生看来,情况并非如此,@vishal我绝对肯定。我们有四个帐户配置为将匹配事件路由到其他帐户的默认事件总线,并在生产中依赖它。aws_cloudwatch_event_目标资源的arn参数可以是另一个aws帐户的默认事件总线的arn(这是我们在生产中所做的)。如果我想设置cloudwatch事件规则来触发StepFunction状态机,我是否需要在
aws\u cloudwatch\u事件规则
和aws\u cloudwatch\u事件目标
之后设置任何权限配置?