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"}]}
...동등한 파일입니다.