为专用子网创建路由表

时间:2019-11-18 13:18:47

标签: amazon-web-services terraform terraform-provider-aws

我正在尝试创建具有两个子网的vpc:一个具有Internet网关的公用网络,以及一个只能与其他本地资源进行通信的私有网络。

我在创建公共路线表时没有问题:

resource "aws_route_table" "HW2-public-crt" {
vpc_id = "${aws_vpc.hw2_vpc.id}"

route {
    //associated subnet can reach everywhere
    cidr_block = "0.0.0.0/0" 
    //CRT uses this IGW to reach internet
    gateway_id = "${aws_internet_gateway.hw2-igw.id}" 

但是当我尝试创建私有路由表时:

resource "aws_route_table" "HW2-private-crt" {
vpc_id = "${aws_vpc.hw2_vpc.id}"
route {
cidr_block = "10.0.0.0/16" 

我收到此错误:

  

“创建路由时出错:MissingParameter:请求必须恰好包含以下其中之一:gatewayId,natGatewayId,networkInterfaceId,vpcPeeringConnectionId,egressOnlyInternetGatewayId,transitionGatewayId或instanceId   状态码:400“

在控制台中创建路由表时,我没有看到这样的要求 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您收到错误消息是因为尝试在路由表中创建一条路由而不告知该路由。

如果您不想路由到子网之外

  

请注意,将VPC的CIDR块映射到“本地”的默认路由是隐式创建的,无法指定。

如果您要在本地以外创建路由:

route参数(这是可选的,以及删除命令后该命令为何起作用)需要cidr_block和以下之一:

  • egress_only_gateway_id
  • gateway_id
  • instance_id
  • nat_gateway_id
  • network_interface_id
  • transit_gateway_id
  • vpc_peering_id

上面的列表是与路由的cidr_block匹配时要路由到的路径。

参考

route_table