下面的Terraformaws_route_table
数据源必须使用哪些特定语法才能成功返回VPC中未指定为主路由表的路由表?
data "aws_route_table" "rt" {
vpc_id = var.vpcId
filter {
name = "association.main"
values = [false]
}
}
VPC中只有一个非主路由表。因此,如果筛选器语法正确,则main=false
的筛选应该识别它。
上述代码当前产生的错误为:
错误:您的查询没有返回任何结果。请更改您的搜索条件,然后重试
我自己做了一些测试,下面是我的一些发现。应该使用aws_route_tables而不是aws_route_table来返回多个RT:
data "aws_route_tables" "rt" {
vpc_id = var.vpcId
filter {
name = "association.main"
values = [false]
}
}
然而,对知之甚少:
- 不与任何子网关联的RT将不会返回
- 如果主路由表与子网相关联,则它仍将被返回。基本上,如果主路由表与子网关联,它将同时被视为主路由表和非主路由表
因此,基本上,上述过滤器的有用性在很大程度上取决于VPC和RT的组织方式。
下面是AWS CLI,我也用它来仔细检查其中的一些发现:
aws ec2 describe-route-tables --filters Name=vpc-id,Values=vpc-0a347b77b8c0109b6 Name=association.main,Values=false