amazon-web-services - 如何使用现有 VPC 创建 aws_instance?
问题描述
是否可以在重用现有 VPC 的同时创建 EC2 实例?
运行以下代码产生Error launching source instance: VPCIdNotSpecified: No default VPC for this user. GroupName is only supported for EC2-Classic and default VPC.
( status code: 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,它基本上存在于我的安全组中。此外,我找不到在aws_instance
块中引用 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": conflicts with vpc_security_group_ids
.
(不用说:两者都my_subnet
使用my_tib_sg
相同的 VPC)
解决方案
我通常subnet_id
直接在aws_instance
资源上使用参数:
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...
}
推荐阅读
- bash - 如何在while循环中使用curl的值?
- r - 在合并 r 中的两个数据帧时计算变化
- reactjs - React - 登录后HeaderComponent不会改变?
- java - Java:在流行的 IDE 中是否有重构“将整个实体传递给方法而不是实体属性”?
- automation - 无法为 .Net 桌面应用程序执行 Load Runner 脚本
- python - 使用python根据存储在变量中的索引将计算值添加到空列
- docker - 使用约束在一台机器上运行多个 traefik 实例
- android - 通过 Retrofit Android 以数组形式发送 ROOM 数据库列表数据
- python - 如何使用超链接更改另一个页面的标签?
- python - 图像上的卷积滤波器实现