terrafrom aws_instance subnet_id - 启动源实例时出错:不支持:当前不支持请求的配置



我正在尝试在该VPC中构建VPC和子网。第三,我正在尝试在该子网中创建 AWS 实例。听起来很简单,但subnet_id参数似乎打破了地形"应用"(计划工作正常(。我错过了什么吗?

摘自 main.tf

resource "aws_vpc" "poc-vpc" {
cidr_block       = "10.0.0.0/16"
instance_tenancy = "dedicated"
enable_dns_hostnames = "true"
}
resource "aws_subnet" "poc-subnet" {
vpc_id     = "${aws_vpc.poc-vpc.id}"
cidr_block = "10.0.1.0/24"
map_public_ip_on_launch = "true"
availability_zone = "${var.availability_zone}"
}

resource "aws_instance" "POC-Instance" {
ami = "${lookup(var.amis, var.region)}"
instance_type = "${var.instance_type}"
availability_zone = "${var.availability_zone}"
associate_public_ip_address = true
key_name = "Pipeline-POC-Key-Pair"
vpc_security_group_ids = ["${aws_security_group.poc-sec-group.id}"]
subnet_id = "${aws_subnet.poc-subnet.id}"
}

如果我删除subnet_id则"应用"有效,但实例是在我的默认 VPC 中创建的。这不是目的。

任何帮助将不胜感激。我是地球形态的新手,所以请温柔一点。

我解决了这个问题,想把它发布出来,希望能为其他人节省一些时间。

问题是aws_instance预配器中的subnet_id冲突与aws_vpc预配器中的instance_tennancy冲突。删除实例租赁,所有内容都是固定的(或设置为默认值(

错误消息毫无意义。我问过这是否可以改进。

其他配置中也可能存在冲突。由于不同的原因,我遇到了相同的不支持的错误。

我使用了从 https://cloud-images.ubuntu.com/locator/ec2/中找到的AMI ami-0ba5dfee72d5bb9a1 我只选择与我的 VPC 位于同一区域的任何内容。

显然,AMI 只能支持 * 实例类型,不支持 t* 或 m* 实例类型。

所以我认为仔细检查一下:

  • 您的 AMI 与您的实例类型兼容。
  • 您的 AMI 与您的 VPC 或子网位于同一区域。
  • 没有其他冲突的配置。

问题是您可能复制的地形示例是错误的。

在大多数情况下,问题出在 vpc 实例租赁属性上。

将 VPC instance_tenancy ="专用"更改为 instance_tenancy ="默认"。

它应该适用于任何 ec2 实例类型。

原因是仅 m5.large 或更大的实例支持专用实例,因此,如果您实际创建较小的实例(如 t3.small 或 t2.m(,则 VPC 和 ec2 实例类型会发生冲突。你可以微等。您可以在此处查看专用实例。

https://aws.amazon.com/ec2/pricing/dedicated-instances/

如果您想创建自己的 VPC 网络而不使用默认网络,那么您还需要创建路由表和互联网网关,以便可以访问创建的 EC2。您还需要添加以下配置,以创建具有 ec2 实例的完整 VPC 网络,该网络可通过您分配的公有 IP 访问

# Internet GW
resource "aws_internet_gateway" "main-gw" {
vpc_id = "${aws_vpc.poc-vpc.id}"
tags {
Name = "poc-vpc"
}
}
# route tables
resource "aws_route_table" "main-public" {
vpc_id = "${aws_vpc.poc-vpc.id}"
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.main-gw.id}"
}
tags {
Name = "main route"
}
}
# route associations public
resource "aws_route_table_association" "main-public-1-a" {
subnet_id = "${aws_subnet.poc-subnet.id}"
route_table_id = "${aws_route_table.main-public.id}"
}

相关内容

最新更新