我正在通过调用任何非AWS书面指南来获取他们的CLI资料...他们的例子很少而且很远,并且没有告诉我任何关于所需语法的内容,并且进一步,充实的阅读将是欢迎。
我正在尝试使用脚本复制我们在GUI中执行的一些任务以节省时间。目前我试图通过向实例的名称(也就是名称标签)提供实例的状态来查找实例的状态。问题是我得到的输出只是状态,没有识别信息。有时用户会输入通配符并返回多个实例,我想显示每个实例的名称以区分。
我成功查询实例的状态是这样的;
aws ec2 describe-instances --query "Reservations[].Instances[].State[]" --filter Name=tag:Name,Values="${userinput}" --output text
输出
16 running
16 running
16 running
16 running
16 running
16 running
虽然所有这些因为通配符而匹配我的输入是正确的,例如test*
,但我需要知道每个人的名字是什么。不是实例id,名称,即test01,test02等。
我本以为
aws ec2 describe-instances --query "Reservations[].Instances[].State[].Tags[?Key=='Name'].Value" --filter Name=tag:Name,Values="${state}" --output text
但输出错误或
aws ec2 describe-instances --query "Reservations[].Instances[].State[].[Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values="${state}" --output text
但是这给了我None
如何将名称列添加到输出中?
答案 0 :(得分:1)
文本输出格式有点难看,因为它每个实例打印多行,但这是一个工作版本:
aws ec2 describe-instances --query "Reservations[].Instances[].[State.Name, Tags[?Key=='Name'].Value[]]" --filter Name=tag:Name,Values="${userinput}" --output text
我无法弄清楚如何仅使用AWS CLI工具将每个实例放在一行上,但这是一个版本,通过管道传输到sed
每个实例打印一行:
aws ec2 describe-instances --query "Reservations[].Instances[].[State.Name, Tags[?Key=='Name'].Value[]]" --filter Name=tag:Name,Values="${userinput}" --output text | sed 'N;s/\n/ /'