Terraform强制根据现有安全组的计划/应用创建新的ec2资源



我有一段非常简单的Terraform代码:

provider "aws" {
region = "eu-west-1"
}
module ec2 {
source = "./ec2_instance"
name = "EC2 Instance 1"
} 

模块所在位置:

variable "name" {
default = "Default Name from ec2_instance.tf"
}
resource "aws_instance" "example" {
ami = "ami-e5083683"
instance_type = "t2.nano"
subnet_id = "subnet-3e976259"
associate_public_ip_address = true
security_groups = [ "sg-7310e10b" ]
tags {
Name = "${var.name}"
}
}

当我第一次运行它时,我得到了以下输出:

security_groups.#:            "" => "1"
security_groups.1642973399:   "" => "sg-7310e10b"

然而,下次我尝试plan时,我会得到:

security_groups.#:            "0" => "1" (forces new resource)
security_groups.1642973399:   "" => "sg-7310e10b" (forces new resource)

什么?!

您错误地将vpc_security_group_id分配到security_groups中,而不是分配到vpc_security_group_ids中。

更改

security_groups = [ "sg-7310e10b" ]

vpc_security_group_ids = [ "sg-7310e10b" ]

一切都会好起来的。