我可以通过发出以下CLI命令列出我的所有现场实例:
aws ec2 describe-instances --filter Name="instance-lifecycle",Values="spot"
但是如何显示所有不现货实例?这些都不起作用:
aws ec2 describe-instances --filter Name="instance-lifecycle",Values=""
aws ec2 describe-instances --filter Name="instance-lifecycle",Values="?"
(对于非现货实例,instance-lifecycle
为空/ null,类似于spot-instance-request-id
)
答案 0 :(得分:1)
AWS CLI 和控制台无法过滤实例生命周期“正常”。
所以我使用 jq 工具而不是 '--filter Key=instance-lifecycle,Values=scheduled'
aws ec2 describe-instances --filter Name="instance-state-code",Values="16" \
| jq '.Reservations[]?.Instances[]? | select(.InstanceLifecycle == null)| .InstanceId' -r
答案 1 :(得分:0)
如果您使用的是Windows平台,则可以使用以下命令列出按需实例
的所有实例aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,InstanceLifecycle]" --output table --region eu-west-1 | find "None"
同样,对于所有现场实例
aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,InstanceLifecycle]" --output table --region eu-west-1 | find "spot"
在Linux环境中,以下内容可能会得到结果
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, InstanceLifecycle]' --output text |
%{if ($_.split("`t")[1] -match "None") { $_.split("`t")[2]; } }
注意:我没有测试过Linux环境命令,因为我目前无法访问Linux
答案 2 :(得分:0)
看来您可以通过--query
选项来做到这一点。
我一直在努力寻找关于期权本身的良好文档,但是我设法遇到了一个事实,那就是您可以在其中传递过滤器。
例如,这两个命令将返回相同的结果:
aws ec2 describe-instances --filters "[{\"Name\": \"tag:role\", \"Values\": [\"web\"]}, {\"Name\":\"instance-state-name\", \"Values\": [\"running\"]}]" --query='Reservations[*].Instances[*].[LaunchTime,PrivateIpAddress][]'
aws ec2 describe-instances --filters "[{\"Name\": \"tag:role\", \"Values\": [\"web\"]}]" --query='Reservations[*].Instances[?InstanceStateName=="running"].[LaunchTime,PrivateIpAddress][]'
这还允许我们在没有指定标签的实例输出中过滤项目(例如,“普通”实例没有“ InstanceLifecycle”属性,因此返回null
):
aws ec2 describe-instances --filters "[{\"Name\": \"tag:role\", \"Values\": [\"web\"]}, {\"Name\":\"instance-state-name\", \"Values\": [\"running\"]}]" --query='Reservations[*].Instances[?!InstanceLifecycle].[LaunchTime,PrivateIpAddress][]'
在查询中注意Instances[?!InstanceLifecycle]
。