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

如何通过CloudFormation模板实现CodeBuild失败时自动发送通知邮件

实现思路

整个功能基于AWS三个服务的联动实现,无需修改现有CodeBuild项目的构建逻辑:

  • CodeBuild运行时会自动向EventBridge推送构建状态变更事件
  • 配置EventBridge规则过滤出构建失败的事件
  • 规则触发后调用SNS(简单通知服务)向预设邮箱发送通知邮件
具体操作指引

1. 在现有CloudFormation模板中新增SNS相关资源

SNS用于存储接收通知的邮箱配置,以及发送邮件,在模板的Resources段添加以下内容:

# SNS主题,用于接收构建失败事件并推送邮件
CodeBuildFailNotificationTopic:
  Type: AWS::SNS::Topic
  Properties:
    DisplayName: CodeBuild构建失败通知
    Subscription:
      - Endpoint: "你的接收通知邮箱地址@example.com" # 替换为实际邮箱
        Protocol: email

# 权限策略:允许EventBridge向该SNS主题发送消息
CodeBuildFailTopicPolicy:
  Type: AWS::SNS::TopicPolicy
  Properties:
    Topics:
      - Ref: CodeBuildFailNotificationTopic
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service: events.amazonaws.com
          Action: sns:Publish
          Resource: Ref: CodeBuildFailNotificationTopic

2. 新增EventBridge事件规则

用于匹配CodeBuild构建失败的事件,同样添加到Resources段:

CodeBuildFailEventRule:
  Type: AWS::Events::Rule
  Properties:
    Description: 匹配CodeBuild构建失败事件
    EventPattern:
      source:
        - aws.codebuild
      detail-type:
        - CodeBuild Build State Change
      detail:
        build-status:
          - FAILED
          # 如果需要包含其他异常状态可以加下面两项
          # - STOPPED
          # - FAULT
        # 如果只需要监控特定的CodeBuild项目,可以加上下面的配置,替换为你的项目名
        # project-name:
        #   - 你的CodeBuild项目名
    State: ENABLED
    Targets:
      - Arn:
          Ref: CodeBuildFailNotificationTopic
        Id: "SendToSNSNotification"

3. 更新CloudFormation栈

修改完模板后执行更新操作即可:

  • 控制台操作:进入CloudFormation控制台,找到你现有CodeBuild对应的栈,点击「更新」,选择「上传模板文件」提交修改后的模板,按提示走完流程即可,遇到权限确认页直接勾选允许即可。
  • CLI操作:执行以下命令(需要提前配置好AWS CLI权限):
    aws cloudformation update-stack --stack-name 你的栈名称 --template-body file://./修改后的模板文件名.yaml --capabilities CAPABILITY_NAMED_IAM
    

4. 生效验证

  • 栈更新完成后,你填写的接收邮箱会收到一封AWS SNS的订阅确认邮件,点击邮件内的确认链接完成订阅
  • 手动触发一次CodeBuild构建,故意让构建失败,测试是否能收到通知邮件
注意事项
  • 如果需要添加多个接收邮箱,只需要在SNS主题的Subscription配置段多加几条订阅配置即可
  • 如果不需要限制只监控特定CodeBuild项目,不用添加project-name过滤规则,账户内所有CodeBuild构建失败都会触发通知
  • SNS订阅确认邮件有效期为3天,超过有效期未确认需要重新更新栈触发订阅邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:54:02