AWS で未使用のボリュームを探すスクリプトを作成したいと思います。 (使用されているボリュームの「状態」は「使用中」です。)
たとえば、aws ec2 explain-volumes --filters Name=status,Values=available を使用すると、次の応答が表示されます。
{ "Volumes": [ { "Attachments": [], "AvailabilityZone": "us-east-1a", "CreateTime": "2022-04-21T08:45:29.704000+00:00", "Encrypted": false, "Size": 1, "SnapshotId": "", "State": "available", "VolumeId": "vol-0e81644ad6193439f", "Iops": 100, "Tags": [ { "Key": "sre", "Value": "test" } ], "VolumeType": "gp2", "MultiAttachEnabled": false } ] }
状態、VolumeId、ラベルを保存したいです。
ベストアンサー1
これを行うコマンドが利用できないと仮定すると、aws
JSONパーサーを使用して必要jq
なデータを個人的に抽出します。
jq '.Volumes[] | { State: .State, VolumeId: .VolumeId, Tags: .Tags }'
配列内の各項目について、そのVolumes
項目で保持したいフィールドのみを含む新しいJSONオブジェクトが作成されます。
与えられたJSONドキュメントを入力として使用すると、次の結果が得られます。
{
"State": "available",
"VolumeId": "vol-0e81644ad6193439f",
"Tags": [
{
"Key": "sre",
"Value": "test"
}
]
}
または以下を使用する場合jq -c
:
{"State":"available","VolumeId":"vol-0e81644ad6193439f","Tags":[{"Key":"sre","Value":"test"}]}
...同等のファイルです。