Как получить все группы безопасности через AWS CLI EC2 для отображения в таблице

Я пытаюсь показать все экземпляры вместе с прикрепленными группами безопасности, именем блочного устройства и статусом их удаления. Мне нужно показать эти данные в табличном формате, но я постоянно получаю сообщение об ошибке ниже.

Пожалуйста, помогите мне понять, что мне здесь не хватает.

PR-MacBook-Pro:~ pr$ aws ec2 describe-instances --output table --query 'Reservations[*].Instances[*].[InstanceId,SecurityGroups[].GroupName,Placement.AvailabilityZone,BlockDeviceMappings[].DeviceName, BlockDeviceMappings[].Ebs.DeleteOnTermination]'

Row should have 1 elements, instead it has 2
PR-MacBook-Pro:~ pr$

1 ответ

Я сталкивался с этим во время поиска в Google.

После небольшого исследования я обнаружил, что вы должны использовать | join(`, `, @)

Так что команда будет

aws ec2 describe-instances --output table --query 'Reservations[*].Instances[*].[InstanceId,SecurityGroups[].GroupName | join(`, `, @),Placement.AvailabilityZone,BlockDeviceMappings[].DeviceName | join(`, `, @), BlockDeviceMappings[].Ebs.DeleteOnTermination | join(`, `, to_array(to_string(@)))]'

Измените вашу команду, как показано ниже, чтобы она работала

aws ec2 describe-instances  --output table  --region "us-east-1"  --query 'Reservations[*].Instances[*].[InstanceId,SecurityGroups[].GroupName |[0],Placement.AvailabilityZone,BlockDeviceMappings[].DeviceName |[0], BlockDeviceMappings[].Ebs.DeleteOnTermination|[0] ]'

ответ был в формате

[
    [
        "i-xxxxxxxx", 
        [
            "xxxxxx"
        ], 
        "us-east-1a", 
        [
            "/dev/xvda"
        ], 
        [
            true
        ]
    ]
]

так что вам нужно разобрать элемент массива с помощью | [0]

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