Как расширить переменную в параметре aws-cli --query

Я пытаюсь написать очень простой скрипт и новичок в aws cli. С помощью моего сценария я вывожу все идентификаторы групп безопасности, которые разрешают все открытые IP-адреса (0.0.0.0/0), и я использую

aws ec2 describe-security-groups --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --region "$region" --query 'SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:"$region"}' --output table. 

region определяется в предыдущей части скрипта, так как я просматриваю все регионы.

Однако, когда таблица представлена, в столбце для региона указано None. Как я могу включить регион только с фильтром aws ec2 describe-security-groups, чтобы он не выводил None?


person Community    schedule 09.07.2020    source источник
comment
регион не является частью ключа объекта в результате. Почему вы хотите добавить это?   -  person jellycsc    schedule 09.07.2020


Ответы (1)


region не существует в выводе команды, поэтому вы не можете искать значение region.

describe-security-groups-output

Таким образом, другой вариант - расширить значение $region variable, а затем использовать escape-последовательность для печати значения как статического значения.

Region:\``echo $region`\`

вы можете использовать

export region=us-east-1 && aws ec2 describe-security-groups --region=$region --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table

Пример вывода

---------------------------------------------------------------------------------------
|                               DescribeSecurityGroups                                |
+-------------------------------+------------+------------------------+---------------+
|             Name              |  Region    |          sg            |      vpc      |
+-------------------------------+------------+------------------------+---------------+
|  launch-wizard-17             |  us-west-2 |  sg-12345  |  vpc-12345 |

AWS-cli посмотрите на регион, так что вы можете получить все регионы сразу, чтобы получить security group из всех регионов, используйте приведенный ниже скрипт.

#!/bin/bash

for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do 
    echo "SG for region ${region}"
    aws ec2 describe-security-groups --region=$  --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table
done

aws-cli-cheatsheet

person Adiii    schedule 09.07.2020
comment
Это именно то, что мне было нужно, спасибо большое!!!!! - person ; 09.07.2020