Service Catalog触发EventBridge告警失败问题排查求助
问题描述
尝试通过Terraform配置EventBridge实现Service Catalog(SC)事件触发SNS通知,使用两种事件规则模式并配置了SNS主题策略,但执行SC操作(部署产品、创建投资组合等)后SNS始终未触发,需排查遗漏点。
使用的Terraform配置
模式1:基础事件规则
resource "aws_cloudwatch_event_rule" "servicecatalog_event_rule" { name = "servicecatalog-rule" description = "Event rule to trigger SNS topic on Service Catalog events" event_pattern = <<EOF { "source": ["aws.servicecatalog"] } EOF }
模式2:基于CloudTrail的API调用事件模式
{ "source": ["aws.servicecatalog"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["servicecatalog.amazonaws.com"] } }
SNS主题策略
resource "aws_sns_topic_policy" "servicecatalog_topic_policy" { arn = aws_sns_topic.servicecatalog_sns_topic.arn policy = <<EOF { "Version": "2012-10-17", "Id": "__default_policy_ID", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "${aws_sns_topic.servicecatalog_sns_topic.arn}" } ] } EOF }
EventBridge目标配置
resource "aws_cloudwatch_event_target" "servicecatalog_event_target" { rule = aws_cloudwatch_event_rule.servicecatalog_event_rule.name target_id = "servicecatalog_event_target" arn = aws_sns_topic.servicecatalog_sns_topic.arn }
排查与解决方案
以下是可能的遗漏点及对应解决方法:
CloudTrail配置缺失
Service Catalog的API调用事件依赖CloudTrail推送至EventBridge,需确认:- 当前区域已启用CloudTrail跟踪,且覆盖目标区域或所有区域
- CloudTrail跟踪未排除Service Catalog的API事件(默认记录所有服务,需确认无自定义排除规则)
- CloudTrail跟踪已开启EventBridge集成功能
事件模式匹配偏差
两种模式可能存在匹配范围不准确的问题:- 前往EventBridge的「事件总线」页面,查看执行SC操作后是否生成对应事件,将实际事件的
detail-type、eventName等字段与你的模式对比 - 可在模式中增加
detail.eventName过滤条件(如"eventName": ["ProvisionProduct", "CreatePortfolio"]),提升匹配精准度
- 前往EventBridge的「事件总线」页面,查看执行SC操作后是否生成对应事件,将实际事件的
EventBridge规则未启用
检查aws_cloudwatch_event_rule的is_enabled属性,默认值为true,但如果存在手动禁用或配置错误,需显式声明:resource "aws_cloudwatch_event_rule" "servicecatalog_event_rule" { # 其他配置项 is_enabled = true }跨区域配置问题
确保EventBridge规则与SNS主题处于同一AWS区域,跨场景调用需在SNS策略中指定对应区域的events.amazonaws.com服务主体,同区域则无需额外操作。权限验证
虽然现有SNS策略逻辑正确,但可通过以下方式验证:- 使用EventBridge的「测试事件」功能,构造符合模式的事件发送至目标SNS,确认是否能收到通知
- 查看CloudTrail中的
Publish操作日志,排查是否存在权限拒绝记录
内容的提问来源于stack exchange,提问作者Goswami
相关产品推荐
相关产品推荐

