Как получить все группы безопасности через 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]