Terraform terrafrom aws_实例子网_id-启动源实例时出错:不支持:当前不支持请求的配置

Terraform terrafrom aws_实例子网_id-启动源实例时出错:不支持:当前不支持请求的配置,terraform,Terraform,我正在尝试建立一个专有网络和该专有网络内的子网。第三,我试图在该子网中创建一个AWS实例。听起来很简单,但是subnet\u id参数似乎打破了terraform的“apply”(计划运行得很好)。我错过什么了吗 从main.tf中提取 resource "aws_vpc" "poc-vpc" { cidr_block = "10.0.0.0/16" instance_tenancy = "dedicated" enable_dns_hostnames = "true"

我正在尝试建立一个专有网络和该专有网络内的子网。第三,我试图在该子网中创建一个AWS实例。听起来很简单,但是
subnet\u id
参数似乎打破了terraform的“apply”(计划运行得很好)。我错过什么了吗

从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}"
}
如果我删除
子网\u id
则“应用”有效,但实例是在我的默认VPC中创建的。这不是目的


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

我解决了这个问题,想把它贴上去,希望能为其他人节省一些时间

问题是aws_实例provisioner中的子网_id与aws_vpc provisioner中的实例_tennancy之间存在冲突。删除实例租约,所有都已修复(或设置为默认值)


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

如果要创建自己的VPC网络而不使用默认网络,则还需要创建路由表和internet网关,以便可以访问创建的ec2。您还需要添加以下配置,以创建一个完整的VPC网络,其中包含ec2实例,该实例可通过您分配的公共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}"
}

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

我使用了我从中找到的AMI-0ba5dfee72d5bb9a1 我只选择与VPC位于同一区域的任何内容

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

所以我想仔细检查一下:

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

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

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

将VPC实例_tenancy=“专用”更改为实例_tenancy=“默认”

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

原因是只有m5.large或更大的实例才支持专用实例,因此如果您实际创建较小的实例(如t3.small或t2.m),VPC和ec2实例类型会发生冲突。您可以在这里查看专用实例


你在哪里问的?看起来我的错误消息在AWS上很常见:例如,请查看哪些注释说明T2实例不支持专用。这正是我的问题,我必须更改为instance_tenancy=“default”以使用较小的t3a.*实例和数据库