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

Другие вопросы по тегам