Amazon ec2 如何使用Terraform将EC2实例启动到现有VPC中?

Amazon ec2 如何使用Terraform将EC2实例启动到现有VPC中?,amazon-ec2,terraform,amazon-vpc,Amazon Ec2,Terraform,Amazon Vpc,我正在编写一个TF脚本,将EC2实例启动到现有的VPC中。我见过一些例子,其中脚本使用脚本中创建VPC和子网的另一部分的变量分配子网id。 我没有使用该示例中所示的subnet_id=“${aws_subnet.main-public-1.id}”,而是尝试将现有子网中的实际子网id放入现有vpn中,这两个id都是使用控制台生成的,如下所示: subnet_id = "subnet-xxxxx" 并以同样的方式应用安全组。但当EC实例启动时,它位于默认VPC中,具有默认的安全组。为什么会这样?

我正在编写一个TF脚本,将EC2实例启动到现有的VPC中。我见过一些例子,其中脚本使用脚本中创建VPC和子网的另一部分的变量分配子网id。 我没有使用该示例中所示的subnet_id=“${aws_subnet.main-public-1.id}”,而是尝试将现有子网中的实际子网id放入现有vpn中,这两个id都是使用控制台生成的,如下所示:

subnet_id = "subnet-xxxxx"
并以同样的方式应用安全组。但当EC实例启动时,它位于默认VPC中,具有默认的安全组。为什么会这样?如何将EC2启动到现有VPC和具有现有安全组的子网中

这是完整的脚本

EC2.tf

provider "aws" {
  profile    = "default"
  region     = var.region
}

resource "aws_instance" "WindowsBox" {
  ami           = "ami-xxxxx"
  instance_type = "t2.medium"
  key_name = aws_key_pair.keypair.key_name

  subnet_id = "subnet-xxxxx"
  vpc_security_group_ids = ["sg-xxxxx"]

  tags = {
    Name ="WindowsBox"
  }
}

resource "aws_eip" "ip" {
    vpc = true
    instance = aws_instance.WindowsBox.id
}

resource "aws_key_pair" "keypair" {
  key_name = "WindowsBox-keypair"
  public_key = file("./kp/WindowsBox-keypair.pub")
}
variable "region" {
  default = "us-east-2"
}
变量。tf

provider "aws" {
  profile    = "default"
  region     = var.region
}

resource "aws_instance" "WindowsBox" {
  ami           = "ami-xxxxx"
  instance_type = "t2.medium"
  key_name = aws_key_pair.keypair.key_name

  subnet_id = "subnet-xxxxx"
  vpc_security_group_ids = ["sg-xxxxx"]

  tags = {
    Name ="WindowsBox"
  }
}

resource "aws_eip" "ip" {
    vpc = true
    instance = aws_instance.WindowsBox.id
}

resource "aws_key_pair" "keypair" {
  key_name = "WindowsBox-keypair"
  public_key = file("./kp/WindowsBox-keypair.pub")
}
variable "region" {
  default = "us-east-2"
}

用于创建实例的安全组也应存在于专有网络中。我想这里不是这样的

我会检查安全组的VPC id是否与子网的VPC id匹配


希望这有助于

您用来创建实例的安全组也应该存在于专有网络中。我想这里不是这样的

我会检查安全组的VPC id是否与子网的VPC id匹配

希望这有帮助