كنت أتمنى استخدام هذا الفلتر مع "Name = vpc-id، Values = $ VPC_ID" للحصول على كل جدول التوجيه أثناء تجاهل جدول التوجيه الرئيسي لـ VPC ، ولكن هذا أيضًا يقوم بتصفية جداول التوجيه مع "الاقترانات": []، حيث لا ينبغي.
هنا مثال لتوضيح المشكلة
$ 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 (ملاحظة: هل لديهم أداة أفضل؟ أم أنه لا يزال منتدى)
آه حسنًا ، شكرًا على التعليقات. تعد منتديات AWS هي أفضل مكان لتقديم الملاحظات لفرق الخدمة.
يبدو أنه لا يوجد شيء عملي الآن من جانب CLI. سأقوم بإغلاق هذه القضية. اسمحوا لي أن أعرف إذا فاتني شيء.