使用Terraform在非默认Event Bridge总线创建规则异常问题
问题原因与解决方案
问题出在aws_cloudwatch_event_rule资源的event_bus_name参数取值错误:该字段需要传入Event Bridge总线的名称,而非ARN。你当前使用了总线的ARN,Terraform无法匹配到对应的自定义总线,因此默认将规则部署到了default总线。
修正后的代码
将event_bus_name的值从aws_cloudwatch_event_bus.event_bridge_bus.arn改为aws_cloudwatch_event_bus.event_bridge_bus.name即可:
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 5.31.0" } } } resource "aws_cloudwatch_event_bus" "event_bridge_bus" { name = "my-event-bridge-bus2" } # Event Rule to capture events from S3 bucket resource "aws_cloudwatch_event_rule" "event_rule" { depends_on = [aws_cloudwatch_event_bus.event_bridge_bus] name = "my-event-rule" description = "Event rule for capturing events from S3 bucket" # 改为总线名称而非ARN event_bus_name = aws_cloudwatch_event_bus.event_bridge_bus.name event_pattern = <<PATTERN { "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutObject", "DeleteObject"] } } PATTERN }
验证方法
执行terraform apply后,可通过AWS控制台或AWS CLI命令确认规则归属:
- CLI命令:
aws events describe-rule --name my-event-rule --event-bus-name my-event-bridge-bus2 - 返回结果中若
EventBusName字段为my-event-bridge-bus2,则说明规则已正确部署到自定义总线。
内容的提问来源于stack exchange,提问作者jdf
相关产品推荐
相关产品推荐

