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

调用Terraform本地EC2模块时vpc_security_group_ids参数不被识别错误排查

问题原因

你调用模块时传入的vpc_security_group_ids参数,在EC2模块内部没有对应的输入变量声明,Terraform无法识别这个参数,因此报错。

解决方案

需要调整EC2模块的变量定义和资源配置,具体步骤如下:

1. 在EC2模块中添加变量声明

在你的./modules/ec2/variables.tf文件中,添加vpc_security_group_ids变量的定义:

variable "vpc_security_group_ids" {
  type        = list(string)
  description = "安全组ID列表,用于关联EC2实例"
}

# 确保instance_type变量已存在(如果之前没定义的话)
variable "instance_type" {
  type        = string
  description = "EC2实例类型"
}

2. 修改EC2模块的资源配置

更新./modules/ec2/main.tf中的aws_instance资源,将vpc_security_group_ids的值替换为新定义的变量:

resource "aws_instance" "mysql" {
  ami           = data.aws_ami.latest_amazon_linux.id
  instance_type = var.instance_type
  key_name      = aws_key_pair.my_local_pubkey.key_name
  vpc_security_group_ids = var.vpc_security_group_ids # 替换原来的[var.default_sg]
}

3. 可选:保留默认安全组配置

如果你希望模块在未传入vpc_security_group_ids时使用默认安全组,可以给变量添加默认值:

variable "vpc_security_group_ids" {
  type        = list(string)
  description = "安全组ID列表,用于关联EC2实例"
  default     = [var.default_sg]
}

同时需要在variables.tf中补充default_sg的定义:

variable "default_sg" {
  type        = string
  description = "默认安全组ID"
}

验证修改

完成上述调整后,重新运行terraform init和terraform plan,错误即可消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:35:16