Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
terraform中是否有任何特定的资源标记来在eventbridge中创建规则_Terraform_Terraform Provider Aws_Terraform Template File - Fatal编程技术网

terraform中是否有任何特定的资源标记来在eventbridge中创建规则

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: # ----------------------------------------------------------

e、 g.我们在cloudwatch中有一个事件规则的资源标签
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事件目标
之后设置任何权限配置?