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

Terraform配置EventBridge过滤ECS集群部署事件遇阻求助

问题解答

你的需求完全可行,问题出在EventBridge事件模式的语法格式上,当前的clusterArn过滤写法不符合规范。

错误原因

你在detail字段里把clusterArn写成了包含对象的数组,而EventBridge的前缀过滤语法要求直接将{"prefix": "xxx"}赋值给clusterArn字段,不需要嵌套数组。

修正后的Terraform代码

修改aws_cloudwatch_event_rule.ecs_deployment中的event_pattern部分,同时添加数据源避免硬编码区域和账号ID:

# 添加数据源获取当前AWS区域和账号ID
data "aws_region" "current" {}
data "aws_caller_identity" "current" {}

resource "aws_cloudwatch_event_rule" "ecs_deployment" {
  name        = "${var.namespace}-${var.environment}-infra-ecs-deployment"
  description = "This rule sends notification on the all app ECS Fargate deployments with respect to the environment."

  depends_on = [data.aws_region.current, data.aws_caller_identity.current]

  event_pattern = <<EOF
{
  "source": ["aws.ecs"],
  "detail-type": ["ECS Deployment State Change"],
  "detail": {
    "clusterArn": {
      "prefix": "arn:aws:ecs:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:cluster/${var.namespace}-${var.environment}-"
    }
  }
}
EOF

  tags = {
    Environment = "${var.environment}"
    Origin      = "terraform"
  }
}

额外说明

  • 如果需要匹配多个集群前缀,可以将多个prefix对象放在数组中,示例:
    "clusterArn": [
      {"prefix": "arn:aws:ecs:us-east-1:1234567890:cluster/prod-"},
      {"prefix": "arn:aws:ecs:us-east-1:1234567890:cluster/staging-"}
    ]
    
  • 修正后部署Terraform,触发对应ECS集群的部署操作,即可验证Slack是否收到目标集群的事件通知,其他集群的部署事件会被自动过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:18:39