CloudWatch事件规则匹配CodeCommit分支前缀失效,求其他匹配方法
解决AWS CodeCommit分支前缀匹配触发CodePipeline的问题
你当前用精确匹配master分支的规则能正常触发CodePipeline,但用prefix匹配release/开头的分支不生效,这里提供两种可行的分支名称模式匹配方法:
方法一:使用通配符匹配
EventBridge事件模式支持用*作为通配符匹配任意字符,直接用release/*就能匹配所有以release/开头的分支,替换后的规则如下:
{ "detail": { "referenceName": ["release/*"], "referenceType": ["branch"] }, "detail-type": ["CodeCommit Repository State Change"], "resources": ["arn:aws:codecommit:region:1234:repo-name"], "source": ["aws.codecommit"] }
方法二:使用正则表达式匹配
如果需要更灵活的分支名称匹配(比如限定release/后是版本号格式),可以用EventBridge的正则表达式匹配能力,通过pattern字段定义规则:
{ "detail": { "referenceName": [{ "pattern": "^release/.*" }], "referenceType": ["branch"] }, "detail-type": ["CodeCommit Repository State Change"], "resources": ["arn:aws:codecommit:region:1234:repo-name"], "source": ["aws.codecommit"] }
这里的^release/.*正则表示分支名称必须以release/开头,后面可以跟任意字符。
额外注意事项
- 确认EventBridge规则的目标已正确关联到你的CodePipeline,且EventBridge拥有触发CodePipeline的权限
- 修改规则后,可手动向
release/xxx分支提交代码,验证EventBridge是否捕获事件、CodePipeline是否正常触发
内容的提问来源于stack exchange,提问作者Bobby Tables
相关产品推荐
相关产品推荐

