我想编写一个脚本来查找 AWS 中未使用的卷。 (已用卷的“状态”为“使用中”)。
例如,当我使用 aws ec2 describe-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"}]}
...这是一个等效文件。