Terraform AWS路由表的地形模板

Terraform AWS路由表的地形模板,terraform,amazon-vpc,routetable,Terraform,Amazon Vpc,Routetable,我创建了一个路由表,其中包含引用现有互联网网关(IGW)的路由规则,该路由表与通过TF模板创建的新VPC关联。但是,相同的IGW已连接到另一个专有网络。当我应用模板时,它抛出以下错误 Error: Error creating route: InvalidParameterValue: route table "X" and network gateway "Y" belong to different networks status code: 400, request id: ab91c2a

我创建了一个路由表,其中包含引用现有互联网网关(IGW)的路由规则,该路由表与通过TF模板创建的新VPC关联。但是,相同的IGW已连接到另一个专有网络。当我应用模板时,它抛出以下错误

Error: Error creating route: InvalidParameterValue: route table "X" and network gateway "Y" belong to different networks
status code: 400, request id: ab91c2ab-ef1e-4905-8a78-b6759bc1e250

这是因为internet网关只能连接到一个VPC,并且必须位于同一个VPC内吗?或者这个错误是由其他原因引起的?

尝试下面的terraform代码

它有VPC、IGW、子网、路由表和NAT网关

而且效果很好

变量“区域”{
default=“us-east-1”
}
变量“服务名称”{
default=“演示服务”
}
当地人{
公共_子网={
“${var.region}a”=“10.10.101.0/24”
“${var.region}b”=“10.10.102.0/24”
“${var.region}c”=“10.10.103.0/24”
}
专用_子网={
“${var.region}a”=“10.10.201.0/24”
“${var.region}b”=“10.10.202.0/24”
“${var.region}c”=“10.10.203.0/24”
}
}
资源“aws_vpc”“此”{
cidr_block=“10.10.0.0/16”
启用\u dns\u支持=真
启用\u dns\u主机名=true
标签={
Name=“${var.service_Name}-vpc”
}
}
资源“aws\U internet\U网关”“此”{
vpc_id=“${aws_vpc.this.id}”
标签={
Name=“${var.service_Name}-internet网关”
}
}
资源“aws_子网”“公共”{
count=“${length(local.public_子网)}”
cidr_block=“${element(值(local.public_子网),count.index)}”
vpc_id=“${aws_vpc.this.id}”
在启动时映射公共ip=true
availability_zone=“${element(键(local.public_子网),count.index)}”
标签={
Name=“${var.service_Name}-服务公共”
}
}
资源“aws_子网”“专用”{
count=“${length(local.private_子网)}”
cidr_block=“${element(值(local.private_子网),count.index)}”
vpc_id=“${aws_vpc.this.id}”
在启动时映射公共ip=true
availability_zone=“${element(键(local.private_子网),count.index)}”
标签={
Name=“${var.service_Name}-服务专用”
}
}
资源“aws\u默认路由\u表”“公共”{
默认_route_table_id=“${aws_vpc.this.main_route_table_id}”
标签={
Name=“${var.service_Name}-public”
}
}
资源“aws路由”“公共互联网网关”{
count=“${length(local.public_子网)}”
route_table_id=“${aws_default_route_table.public.id}”
目的地\u cidr\u块=“0.0.0.0/0”
gateway_id=“${aws_internet_gateway.this.id}”
超时{
create=“5m”
}
}
资源“aws\U路由\U表\U关联”“公共”{
count=“${length(local.public_子网)}”
subnet_id=“${element(aws_subnet.public.*.id,count.index)}”
route_table_id=“${aws_default_route_table.public.id}”
}
资源“aws_路由_表”“专用”{
vpc_id=“${aws_vpc.this.id}”
标签={
Name=“${var.service_Name}-private”
}
}
资源“aws\U路由\U表\U关联”“专用”{
count=“${length(local.private_子网)}”
subnet_id=“${element(aws_subnet.private.*.id,count.index)}”
route_table_id=“${aws_route_table.private.id}”
}
资源“aws_eip”“nat”{
vpc=真
标签={
Name=“${var.service_Name}-eip”
}
}
资源“aws\u nat\u网关”“此”{
分配_id=“${aws_eip.nat.id}”
subnet_id=“${aws_subnet.public.0.id}”
标签={
Name=“${var.service_Name}-nat gw”
}
}
资源“aws\U路由”“专用\U nat\U网关”{
route_table_id=“${aws_route_table.private.id}”
目的地\u cidr\u块=“0.0.0.0/0”
nat_gateway_id=“${aws_nat_gateway.this.id}”
超时{
create=“5m”
}
}
请参阅此存储库:


用terraform试试下面的代码

它有VPC、IGW、子网、路由表和NAT网关

而且效果很好

变量“区域”{
default=“us-east-1”
}
变量“服务名称”{
default=“演示服务”
}
当地人{
公共_子网={
“${var.region}a”=“10.10.101.0/24”
“${var.region}b”=“10.10.102.0/24”
“${var.region}c”=“10.10.103.0/24”
}
专用_子网={
“${var.region}a”=“10.10.201.0/24”
“${var.region}b”=“10.10.202.0/24”
“${var.region}c”=“10.10.203.0/24”
}
}
资源“aws_vpc”“此”{
cidr_block=“10.10.0.0/16”
启用\u dns\u支持=真
启用\u dns\u主机名=true
标签={
Name=“${var.service_Name}-vpc”
}
}
资源“aws\U internet\U网关”“此”{
vpc_id=“${aws_vpc.this.id}”
标签={
Name=“${var.service_Name}-internet网关”
}
}
资源“aws_子网”“公共”{
count=“${length(local.public_子网)}”
cidr_block=“${element(值(local.public_子网),count.index)}”
vpc_id=“${aws_vpc.this.id}”
在启动时映射公共ip=true
availability_zone=“${element(键(local.public_子网),count.index)}”
标签={
Name=“${var.service_Name}-服务公共”
}
}
资源“aws_子网”“专用”{
count=“${length(local.private_子网)}”
cidr_block=“${element(值(local.private_子网),count.index)}”
vpc_id=“${aws_vpc.this.id}”
在启动时映射公共ip=true
availability_zone=“${element(键(local.private_子网),count.index)}”
标签={
Name=“${var.service_Name}-服务专用”
}
}
资源“aws\u默认路由\u表”“公共”{
默认_route_table_id=“${aws_vpc.this.main_route_table_id}”
标签={
Name=“${var.service_Name}-public”
}
}
资源“aws路由”“公共互联网网关”{
count=“${length(local.public_子网)}”
route_table_id=“${aws_default_route_table.public.id}”
目的地\u cidr\u块=“0.0.0.0/0”
gateway_id=“${aws_internet_gateway.this.id}”
超时{
create=“5m”
}
}
资源“aws\U路由\U表\U关联”“公共”{
count=“${length(local.public_子网)}”
subnet_id=“${element(aws_subnet.public.*.id,count.index)}”
路线表1