使用AWS CLI通过标记终止EC2实例上的集合

问题描述 投票:1回答:3

欢迎来到AWS,但我希望通过按标记名称过滤来使用AWS CLI终止一组ec2实例。

如果我使用describe-instances,我可以通过tag:key = value来filter。对于terminate-instances,我没有看到过滤方式。我认为这是可能的,因为我可以使用AWS控制台过滤和终止,但我希望通过CLI执行此操作。

amazon-web-services amazon-ec2
3个回答
3
投票

terminate-instances命令仅获取实例ID列表。您需要先编写一个脚本来运行describe-instances命令并捕获实例ID,然后将这些ID传递给terminate-instances命令。


1
投票

我创建了以下脚本(.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

1
投票

最新的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)

只要预期实例的数量不大,就可以使用上述实例。

© www.soinside.com 2019 - 2024. All rights reserved.