Как расширить переменную в параметре aws -cli --query - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь написать очень простой скрипт и новичок в 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?

1 Ответ

1 голос
/ 09 июля 2020

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

describe-security-groups-output

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

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

...