1

aws_route_table为了使下面的 Terraform 数据源成功返回在 VPC 中未指定为主路由表的路由表,必须使用什么特定语法?

data "aws_route_table" "rt" {
  vpc_id = var.vpcId

  filter {
    name   = "association.main"
    values = [false]
  }

}

VPC 中只有一个非主路由表。因此,main=false如果过滤器语法正确,过滤器应该识别它。

上述代码当前产生的错误是:

错误:您的查询未返回任何结果。请更改您的搜索条件,然后重试

4

1 回答 1

2

我自己做了一些测试,以下是我的一些发现。aws_route_tables而不是aws_route_table应该用于返回多个 RT:

data "aws_route_tables" "rt" {
  vpc_id = var.vpcId

  filter {
    name   = "association.main"
    values = [false]
  }
}

但是,有几件事需要了解

  1. 不与任何子网关联的 RT 将不会被返回
  2. 如果主路由表与子网相关联,它仍然会被返回。基本上,如果主路由表与子网相关联,它将同时被视为主路由表和非主路由表。

所以基本上,上述过滤器的有用性很大程度上取决于您的 VPC 和 RT 的组织方式。

下面是 AWS CLI,我也用它来仔细检查其中一些发现:

aws ec2 describe-route-tables --filters Name=vpc-id,Values=vpc-0a347b77b8c0109b6 Name=association.main,Values=false 
于 2020-12-09T00:39:17.417 回答