EC2 インスタンス削除時に、自動でEBS ボリュームも削除されるつもりだったのにうっかり残っていた、という経験はありますでしょうか。
このようなとき、アタッチされていない EBS ボリュームの一覧を取得したいときがあるかもしれません(ありました)。
ボリュームの状態が available が「ボリュームはインスタンスにアタッチされていません」とのことなので、--filters オプションで status が available なものに絞った上で、 --query オプションで表示項目を調整することにします。
Name タグの値だけ表示したい場合
$ aws ec2 describe-volumes --filters Name=status,Values=available --query 'Volumes[*].Tags[?key==Name].Value[]'
[
"ugui",
"oikawa",
"ginbuna",
"kinbuna",
"tanago"
]
ボリュームIDとセットで表示したい場合(キー付き)
$ aws ec2 describe-volumes --filters Name=status,Values=available --query 'Volumes[].{VolumeId: VolumeId, Name: Tags[?key==Name].Value | [0]}'
[
{
"VolumeId": "vol-086009cxxxxxxxxxx",
"Name": "ugui"
},
{
"VolumeId": "vol-01183daxxxxxxxxxx",
"Name": "oikawa"
},
{
"VolumeId": "vol-0794be4xxxxxxxxxx",
"Name": "kinbuna"
},
{
"VolumeId": "vol-0a9efabxxxxxxxxxx",
"Name": "tanago"
}
]
JMESPath 苦手なので、もう少し良い書き方があるかもしれません。