欢迎来到AWS,但我希望通过按标记名称过滤来使用AWS CLI终止一组ec2实例。
如果我使用describe-instances
,我可以通过tag:key = value来filter
。对于terminate-instances
,我没有看到过滤方式。我认为这是可能的,因为我可以使用AWS控制台过滤和终止,但我希望通过CLI执行此操作。
terminate-instances
命令仅获取实例ID列表。您需要先编写一个脚本来运行describe-instances
命令并捕获实例ID,然后将这些ID传递给terminate-instances
命令。
我创建了以下脚本(.sh),它对我有用:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --filters 'Name=tag-value,Values=MYTAG' --output text |
grep stopped |
awk '{print $2}' |
while read line;
do aws ec2 terminate-instances --instance-ids $line
done
最新的AWS CLI允许您避免使用任何脚本或jq:
aws ec2 terminate-instances --instance-ids $(aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' --filters "Name=tag:tagkey,Values=tagvalue" --output text)
只要预期实例的数量不大,就可以使用上述实例。