我希望将此过滤器与“Name=vpc-id,Values=$VPC_ID”结合使用来获取所有路由表,同时丢弃 VPC 的主路由表,但这也会过滤掉带有“Associations”的路由表:[],哪里不应该。
这是一个说明问题的示例
$ aws ec2 describe-route-tables --filters "Name=vpc-id,Values=$VPC_ID"
{
"RouteTables": [
{
"RouteTableId": "rtb-186a857c",
"PropagatingVgws": [],
"Tags": [
{
"Value": "dev-vpc-default-gw-routing-table",
"Key": "Name"
}
],
"Associations": [],
"Routes": [
{
"State": "active",
"DestinationCidrBlock": "10.0.0.0/16",
"GatewayId": "local",
"Origin": "CreateRouteTable"
},
{
"State": "blackhole",
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": "igw-35fa8b50",
"Origin": "CreateRoute"
}
],
"VpcId": "vpc-09be846c"
},
{
"RouteTableId": "rtb-096a856d",
"PropagatingVgws": [],
"Tags": [],
"Associations": [
{
"RouteTableId": "rtb-096a856d",
"RouteTableAssociationId": "rtbassoc-6469c600",
"Main": true
}
],
"Routes": [
{
"State": "active",
"DestinationCidrBlock": "10.0.0.0/16",
"GatewayId": "local",
"Origin": "CreateRouteTable"
}
],
"VpcId": "vpc-09be846c"
}
]
}
$ aws ec2 describe-route-tables --filters "Name=vpc-id,Values=$VPC_ID" "Name=association.main,Values=false"
{
"RouteTables": []
}
看起来我们正在将请求正确发送到 EC2。 鉴于这是一个服务器端过滤器,这是需要在 EC2 端进行的更改。
您现在拥有的最佳解决方案是使用--filters
服务器端过滤器以及--query
客户端过滤器来完成您想要的:
aws ec2 describe-route-tables --filters "Name=vpc-id,Values=$VPC_ID" --query 'RouteTables[?Associations[0].Main != `true`]'
那对你有用吗?
谢谢我不是在寻找解决方法,我只是想表明观察到的行为不是预期的。 我会看到在 AWS 论坛中提交错误报告(PS:他们有更好的工具吗?还是它仍然是论坛)
啊好的,谢谢反馈。 AWS 论坛是向服务团队提供反馈的最佳场所。
听起来现在从 CLI 方面没有什么可操作的。 我将继续并结束这个问题。 如果我错过了什么,请告诉我。