2017-07-06 4 views
0

Je rencontre un problème avec cette commande. J'essaie d'énumérer seulement les règles egressACL, et juste le numéro de la règle. Voici donc ma commande:AWS CLI: description des listes de contrôle d'accès réseau

aws ec2 describe-network-acls --network-acl-ids acl-c324a5a4 --output text --query 'NetworkAcls[*].Entries[*].{RN:RuleNumber}' --filter Name=entry.rule-action,Values=allow Name=entry.egress,Values=true 

Le retour de c'est:

100 
110 
120 
130 
140 
150 
160 
170 
32767 
100 
110 
120 
130 
140 
150 
160 
170 
32767 

Il est essentiellement listage à la fois la sortie et les règles d'Ingress. Les règles d'entrée et de sortie ont le même numéro de règle. Il énumère également le * DENY rule (32767), je voudrais également éviter cela.

Quelqu'un peut-il m'aider avec cette commande où je veux lister seulement les numéros de règle de sortie?

Merci

Répondre

1

si vous voulez que le Egress Règle numéro qui sont autorisés. Vous pouvez le faire en utilisant la requête suivante:

aws ec2 describe-network-acls \ 
    --output text \ 
    --network-acl-ids acl-c324a5a4 \ 
    --query 'NetworkAcls[*].Entries[?(RuleAction==`allow` && Egress==`true`)].{RN:RuleNumber}' 

Vous pouvez en savoir plus sur Controlling Command Output from the AWS Command Line Interface

+0

Bon, alors voilà comment vous le faites. Merci beaucoup! Puis-je vous déranger avec une dernière chose? Comment ajouter à cette requête la Port Range? Dites que j'ai la règle sur le port À et depuis le port 20 ... comment puis-je effectuer une requête pour ce port spécifique (y compris l'autorisation && sortie d'avant). Merci! –

+1

En fait, pas besoin. J'aurais dû essayer avant de te demander plus d'aide. Seulement eu à faire: PortRange.To == '20' –

1

Avec l'aide de awk et grep nous pouvons obtenir la liste des seules règles Egress comme indiqué ci-dessous.

aws ec2 describe-network-acls --network-acl-ids acl-63092b1a --query 'NetworkAcls[*].Entries[*].[Egress,RuleNumber]' --output text | grep -v False | awk {'print $2'} | grep -v '^$\|^\s*\#' 

Pour filtrer les résultats selon la valeur d'un champ spécifique, utilisez le JMESPath "?" opérateur. Les sorties exemple de requête suivant uniquement des volumes dans la zone de disponibilité nous-ouest-2a:

$ aws ec2 describe-volumes --query 'Volumes[?AvailabilityZone==`us-west-2a`]' 

For More Information please go through this article

+0

Bonne idée, en utilisant awk. Merci. Mais vous serez probablement d'accord avec moi pour dire que l'utilisation correcte de la chaîne de requête semble beaucoup plus professionnelle - qu'en pensez-vous? –

+0

Je suis d'accord avec vous @FelipeCaldas – sudheerchamarthi