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

Terraform如何将同一安全组规则添加到多个AWS安全组

报错根因

aws_security_group_rule资源的security_group_id参数被定义为单个字符串类型,仅支持绑定1个安全组,直接传入安全组ID列表会触发类型不匹配校验失败,也就是报错提示Inappropriate value for attribute "security_group_id": string required的核心原因。

正确配置方式

通过Terraform内置的for_each元参数遍历目标安全组ID集合,为每个安全组生成配置完全一致的独立规则资源即可,不需要重复编写规则块,配置示例如下:

resource "aws_security_group_rule" "egress_all" {
  # 遍历所有需要绑定该规则的安全组ID
  for_each          = toset([aws_security_group.test-sg-1.id, aws_security_group.test-sg-2.id])
  from_port         = 0
  protocol          = "-1"
  # 传入当前遍历到的单个安全组ID
  security_group_id = each.value
  to_port           = 0
  type              = "egress"
  cidr_blocks       = ["0.0.0.0/0"]
}

方案说明

  • 上述配置生成的出方向全通规则参数完全一致,仅绑定的安全组不同,完全满足单规则模板关联多个安全组的需求
  • 后续需要新增绑定的安全组时,仅需将对应安全组ID加入for_each的遍历列表即可,不需要修改规则核心参数
  • 优先使用for_each而非count做批量创建:for_each以安全组ID作为资源唯一标识,不会因为列表内元素顺序变化导致规则意外销毁重建,稳定性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:24:40