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

如何在Terraform中为EC2实例模块关联指定安全组

解决安全组与EC2实例模块关联的步骤

要实现EC2实例关联指定安全组,需完成以下三步操作:

1. 安全组模块添加输出,暴露安全组ID

在SG模块目录下创建(或修改)outputs.tf,将安全组ID暴露给外部模块引用:

output "security_group_id" {
  description = "创建的WebSG安全组ID"
  value       = aws_security_group.WebSG.id
}

2. EC2模块添加变量并关联安全组

首先在EC2模块目录下创建(或修改)variables.tf,定义接收安全组ID的变量:

variable "security_group_ids" {
  description = "关联EC2实例的安全组ID列表"
  type        = list(string)
}

接着修改EC2模块的ec2.tf,给aws_instance资源添加安全组关联配置:

resource "aws_instance" "web" {
  ami               = var.ami
  instance_type     = var.instance_type
  key_name          = var.key_name
  count             = length(var.availability_zones_private_ec2)
  availability_zone = var.availability_zones_private_ec2[count.index]
  subnet_id         = var.subnet_cidrs_private_ec2[count.index]
  user_data         = var.user_data_ec2_private[count.index]
  
  # 新增安全组关联参数
  vpc_security_group_ids = var.security_group_ids
}

3. 主模块(main.tf)传递安全组ID到EC2模块

修改main.tf,将安全组模块输出的ID传入EC2模块的对应变量:

module "ec2_private" {
  source              = "./module/EC2"
  security_group_ids  = [module.security_group_PS.security_group_id]
  # 注意:需补充EC2模块依赖的其他变量(如ami、instance_type等),否则执行会报错
}

module "security_group_PS" {
  source = "./module/SG"
  name   = "WebSG"
  # 注意:需补充SG模块依赖的ingress_rules变量,否则执行会报错
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:12:40