我正在编写TF脚本,以将EC2实例启动到现有VPC中。我已经看到了一些示例,其中脚本使用脚本的另一部分中创建VPC和子网的变量来分配子网ID。 我没有像该示例所示那样使用subnet_id =“ $ {aws_subnet.main-public-1.id}”,而是尝试将来自现有子网的实际子网ID放入现有的VPN中,这两个都是使用控制台完成的,就像这样:
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")
}
Variables.tf
variable "region" {
default = "us-east-2"
}
答案 0 :(得分:0)
用于创建实例的安全组也应该存在于VPC内部。我认为这里不是这样。
我将检查安全组的VPC ID与子网的VPC ID是否匹配。
希望这会有所帮助