[英]How to expand variable in aws-cli --query parameter
我正在尝试编写一个非常简单的脚本,并且对 aws cli 相当陌生。 使用我的脚本,我正在输出允许所有开放 IP (0.0.0.0/0) 的所有安全组 ID,并且我正在使用
aws ec2 describe-security-groups --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --region "$region" --query 'SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:"$region"}' --output table.
该region
是在脚本的前半部分定义的,因为我要遍历所有区域。
但是,当表格出现时,区域列显示None
。 如何仅包含aws ec2 describe-security-groups
过滤器的区域,使其不包含 output None?
该region
在命令的 output 中不存在,因此无法查找值region
。
所以另一个选择是扩展$region variable
的值,然后使用转义序列将值打印为 static 值。
Region:\``echo $region`\`
您可以使用
export region=us-east-1 && aws ec2 describe-security-groups --region=$region --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table
样品 output
---------------------------------------------------------------------------------------
| DescribeSecurityGroups |
+-------------------------------+------------+------------------------+---------------+
| Name | Region | sg | vpc |
+-------------------------------+------------+------------------------+---------------+
| launch-wizard-17 | us-west-2 | sg-12345 | vpc-12345 |
AWS-cli
查看区域,因此您可以一次获取所有区域,以从所有区域获取security group
,使用下面的脚本。
#!/bin/bash
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
echo "SG for region ${region}"
aws ec2 describe-security-groups --region=$ --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.