AWS CLI filters by tags
AWS CLI使ってタグでEC2フィルタする方法、 何回書いても忘れるのでエントリーとして書く。 Valuesはカンマで区切って値を複数書ける。
aws ec2 describe-instances \
--outout json \
--filters "Name=tag:role,Values=webapp,db" \
--query "Reservations[].Instances[].InstanceId"
2017-01-13追記 こんなの自分で書いてたのを見つけた。jq使うけどこっちのほうが出力が見やすいかな。
ls-ec2() {
tag='dev*'
aws ec2 describe-instances \
--filter Name=tag:Name,Values="$tag" \
"Name=instance-state-name,Values=running" \
| jq '[.Reservations[].Instances[] | {
Name: .Tags[]|select(.Key=="Name").Value,
InstanceId: .InstanceId,
InstanceType: .InstanceType,
PublicIpAddress: .PublicIpAddress,
VpcId: .VpcId,
AvailabilityZone: .Placement.AvailabilityZone,
SecurityGroups: .SecurityGroups
}]'
}