如何在 aws-cli --query 参数中扩展变量
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
是在脚本的前面部分定义的,因为我要遍历所有区域。
但是,当显示 table 时,区域列显示 None
。我怎样才能包含只有 aws ec2 describe-security-groups
过滤器的区域,这样它就不会输出 None?
命令的输出中不存在region
,因此您无法查找值region
。
describe-security-groups-output
所以另一种选择是扩展 $region variable
的值,然后使用转义序列将该值打印为静态值。
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
示例输出
---------------------------------------------------------------------------------------
| 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
我正在尝试编写一个非常简单的脚本,而且我对 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
是在脚本的前面部分定义的,因为我要遍历所有区域。
但是,当显示 table 时,区域列显示 None
。我怎样才能包含只有 aws ec2 describe-security-groups
过滤器的区域,这样它就不会输出 None?
命令的输出中不存在region
,因此您无法查找值region
。
describe-security-groups-output
所以另一种选择是扩展 $region variable
的值,然后使用转义序列将该值打印为静态值。
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
示例输出
---------------------------------------------------------------------------------------
| 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