AWS CLI: Как использовать «--query» для получения вывода из вложенного JSON
Я использую aws-cli v2 для получения вывода --query из AWS Describe-volumes. При этом я пытаюсь получить идентификатор тома, размер, идентификатор экземпляра и состояние. Идентификатор экземпляра вложен в тома описания AWS.
Источник :
{
"Volumes": [
{
"Attachments": [
{
"AttachTime": "2017-11-21T16:12:57+00:00",
"Device": "/dev/sda1",
"InstanceId": "i-0e*******",
"State": "attached",
"VolumeId": "vol-0a******",
"DeleteOnTermination": true
}
],
"AvailabilityZone": "us-east-1b",
"CreateTime": "2017-11-21T16:12:57.122000+00:00",
"Encrypted": false,
"Size": 50,
"SnapshotId": "snap-002********",
"State": "in-use",
"VolumeId": "vol-0a6d8675a63b65c20",
"Iops": 150,
"VolumeType": "gp2",
"MultiAttachEnabled": false
},
В настоящее время я могу получить выходные данные таблицы, но в двух небольших таблицах. Хотя я хочу, чтобы результат был в одной таблице.
aws ec2 describe-volumes --query "Volumes[*].{Size:Size,State:State,Type:VolumeType,Attachments[Instance:InstanceId],Volume:VolumeId}" --output table
| DescribeVolumes |
+------+---------+-------+--------------------------+
| Size | State | Type | Volume |
+------+---------+-------+--------------------------+
| 10 | in-use | gp2 | vol-0a468f3b9a1762acc |
+------+---------+-------+--------------------------+
|| InstanceID ||
|+-------------------------------------------------+|
|| i-0d5a6a29093a7039f ||
|+-------------------------------------------------+|
Есть ли способ объединить таблицы DescribeVolumes и InstanceID в одну таблицу. Например
------------------------------------------------------------------------
| DescribeVolumes |
+----------+-------+------------+-----------+--------------------------+
| Instance | Size | State | Type | Volume |
+----------+-------+------------+-----------+--------------------------+
| None | 50 | in-use | gp2 | vol-0a6d************* |
1 ответ
Если вы можете предположить, что не будет более одного вложения, вы можете использовать:
aws ec2 describe-volumes --query "Volumes[*].{Size:Size,State:State,Type:VolumeType,Instance:Attachments[0].InstanceId,Volume:VolumeId}" --output table