是否可以在重用现有 VPC 的同时创建 EC2 实例?
运行以下代码会产生启动源实例时出错:VPCIdNotSpecified:此用户没有默认 VPC。仅 EC2-Classic 和默认 VPC 支持 GroupName。
(状态代码:400
):
data "aws_security_groups" "my_tib_sg" {
tags = {
Name = "my-security-group"
}
}
resource "aws_instance" "nginx" {
ami = data.aws_ami.aws-linux.id
instance_type = "t2.micro"
key_name = var.key_name
vpc_security_group_ids = [data.aws_security_groups.my_tib_sg.id]
# more, irrelevant stuff...
}
FWIU 从错误来看,aws_instance
block 需要引用我的 VPC,该 VPC 基本上存在于我的安全组中。此外,我找不到在 aws_instance
block 中引用 VPC 的方法。
更新每个答案的代码:
我根据以下答案更新了代码:
data "aws_security_groups" "my_tib_sg" {
tags = {
Name = "my-tib-sg"
}
}
data "aws_subnet" "my_subnet" {
tags = {
Name = "my-tib-subnet-1"
}
}
resource "aws_network_interface" "my_ani" {
subnet_id = data.aws_subnet.my_subnet.id
private_ips = ["10.0.0.10"]
tags = {
Name = "my-tib-ani"
by = "TF_TF"
}
}
resource "aws_instance" "nginx" {
ami = data.aws_ami.aws-linux.id
instance_type = "t2.micro"
key_name = var.key_name
vpc_security_group_ids = [data.aws_security_groups.my_tib_sg.id]
network_interface {
network_interface_id = aws_network_interface.my_ani.id
device_index = 0
}
connection {
type = "ssh"
host = self.public_ip
user = "ec2-user"
private_key = file(var.private_key_path)
}
provisioner "remote-exec" {
inline = [
"sudo yum install nginx -y",
"sudo service nginx start"
]
}
}
但错误更改为“network_interface”:与vpc_security_group_ids冲突
。
(不用说:my_subnet
和 my_tib_sg
使用相同的 VPC)
最佳答案
我通常直接在 aws_instance
资源上使用 subnet_id
参数:
data "aws_security_groups" "my_tib_sg" {
tags = {
Name = "my-tib-sg"
}
}
data "aws_subnet" "my_subnet" {
tags = {
Name = "my-tib-subnet-1"
}
}
resource "aws_instance" "nginx" {
ami = data.aws_ami.aws-linux.id
instance_type = "t2.micro"
key_name = var.key_name
vpc_security_group_ids = [data.aws_security_groups.my_tib_sg.ids[0]]
# specify the subnet_id here
subnet_id = data.aws_subnet.my_subnet.id
# more, irrelevant stuff...
}
关于amazon-web-services - 如何使用现有VPC创建aws_instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65860901/