繁体   English   中英

如何在 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是在脚本的前半部分定义的,因为我要遍历所有区域。

但是,当表格出现时,区域列显示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

aws-cli-备忘单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM