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

如何用Terraform配置CodeBuild的SNS(Slack)通知?

用Terraform配置AWS CodeBuild的SNS通知

CodeBuild的通知配置在Terraform中通过aws_codebuild_project资源的notification块实现,对应控制台里「操作」→「创建通知」的功能,和CodePipeline在action内配置的方式不同。

核心配置示例

假设你已经拥有用于Slack通知的SNS主题ARN(示例中使用var.codebuild_sns_arn引用),可在CodeBuild项目中添加如下配置:

resource "aws_codebuild_project" "example" {
  name          = "example-project"
  build_timeout = "5"
  service_role  = aws_iam_role.codebuild_role.arn

  # 项目基础配置(如代码源、环境等,此处省略)
  source {
    type            = "GITHUB"
    location        = "https://github.com/example/repo.git"
    git_clone_depth = 1
  }

  # 通知配置块
  notification {
    # 指定触发通知的构建事件,可多选
    events = [
      "SUCCEEDED",
      "FAILED",
      "IN_PROGRESS"
    ]

    target {
      type = "SNS" # CodeBuild目前仅支持SNS作为通知目标
      arn  = var.codebuild_sns_arn
    }
  }
}

参数说明

  • events:触发通知的构建事件类型,可选值包括SUCCEEDED、FAILED、IN_PROGRESS、STOPPED,可根据需求选择多个
  • target.type:固定设为SNS,是当前CodeBuild支持的唯一通知目标类型
  • target.arn:你的SNS主题ARN,需确保该主题已完成Slack订阅配置(通过SNS控制台添加Slack端点)

必要权限配置

要保证CodeBuild能正常发送通知,需给CodeBuild的服务角色添加向目标SNS主题发布消息的权限:

resource "aws_iam_policy" "codebuild_sns_publish" {
  name        = "codebuild-sns-publish"
  description = "允许CodeBuild向指定SNS主题发送消息"

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action   = "sns:Publish"
        Effect   = "Allow"
        Resource = var.codebuild_sns_arn
      }
    ]
  })
}

# 将策略附加到CodeBuild服务角色
resource "aws_iam_role_policy_attachment" "codebuild_sns_attach" {
  role       = aws_iam_role.codebuild_role.name
  policy_arn = aws_iam_policy.codebuild_sns_publish.arn
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:32:11