【问题标题】:creating route table for private subnet为私有子网创建路由表
【发布时间】:2019-11-18 13:18:47
【问题描述】:

我正在尝试创建具有两个子网的 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、transitGatewayId 或 instanceId 中的一个 状态码:400"

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

【问题讨论】:

  • 你的 gateway_id 在哪里?
  • gateway_id -(可选)VPC 互联网网关或虚拟私有网关的标识符。我不想上网,不知道什么是虚拟私有网关...
  • 当我删除 cidr_block = "10.0.0.0/16" 它让我完成计划没有错误......

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


【解决方案1】:

您收到错误是因为尝试在路由表中创建路由而不告诉它路由。

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

请注意,将 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 。

【讨论】:

  • 如果子网是完全私有的并且不允许超出 VPC 的流量(即不通过 NAT 到 Internet 或任何对等的 VPC),则路由表可以是完全空的。所有路由表上总是有一条 VPC 本地路由,不需要指定。
  • @ydaetskcoR 我同意,我会将其添加到答案中。
猜你喜欢
  • 2022-11-05
  • 2020-11-17
  • 2020-10-06
  • 1970-01-01
  • 2022-01-17
  • 2021-10-03
  • 2021-06-18
  • 2016-08-16
  • 2023-02-08
相关资源
最近更新 更多