You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform部署CloudWatch Event规则时ID格式错误排查求助

解决CloudWatch Event Target的ID格式错误问题

你遇到的ID格式不符合预期(),应为EVENTBUSNAME/RULENAME或RULENAME错误,根源出在两处配置问题:

1. Event Rule的event_bus_name误用ARN

aws_cloudwatch_event_rule资源的event_bus_name字段要求传入事件总线名称,而非ARN。你当前传入的是事件总线的ARN值,会导致规则与自定义事件总线的关联失效,进而影响Target对规则的识别。

2. Event Target未关联自定义事件总线

当Event Rule绑定在自定义事件总线上时,对应的Event Target必须明确指定event_bus_name参数。如果省略该参数,Terraform会默认去默认事件总线查找规则,因找不到匹配资源触发格式错误。


修正后的代码

resource "aws_kinesis_firehose_delivery_stream" "kinesis_stream" {
  name        = var.delivery_stream_name
  destination = "s3"

  s3_configuration {
    role_arn   = aws_iam_role.kinesis_data_firehose_role.arn
    bucket_arn = aws_s3_bucket.s3_bucket.arn
  }
}

resource "aws_cloudwatch_event_rule" "successful_sign_in_rule" {
  description    = "Auth0 User Successfully signed in"
  # 替换为事件总线名称而非ARN
  event_bus_name = aws_cloudwatch_event_bus.event_bridge_event_bus.name
  event_pattern  = <<EOF
{
  "detail-type": [
    "s"
  ]
}
EOF
}

resource "aws_cloudwatch_event_target" "successful_sign_in_rule_target" {
  rule      = aws_cloudwatch_event_rule.successful_sign_in_rule.name
  arn       = aws_kinesis_firehose_delivery_stream.kinesis_stream.arn
  # 明确指定自定义事件总线名称
  event_bus_name = aws_cloudwatch_event_bus.event_bridge_event_bus.name
}

可选替代方案

如果不想单独指定event_bus_name,也可以将rule参数写成事件总线名称/规则名称的格式:

rule = "${aws_cloudwatch_event_bus.event_bridge_event_bus.name}/${aws_cloudwatch_event_rule.successful_sign_in_rule.name}"

不过前者的代码可读性更强,推荐使用。

内容的提问来源于stack exchange,提问作者dantevn5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:30:44