1. CLI 명령어

1-1. Security Group 이름 출력

$ aws ec2 describe-security-groups --query 'SecurityGroups[].{Name:GroupName}'

1-2. Security Group 이름과 ID 출력

$ aws ec2 describe-security-groups --query 'SecurityGroups[].[Tags[?Key==`Name`] | [0].Value, GroupId]'

1-3. 특정 Security Group ID의 정보 출력

$ aws ec2 describe-security-groups --group-ids <GroupId>

1-4. 특정 Security Group 이름의 정보 출력

$ aws ec2 describe-security-groups --filters 'Name=group-name,Values=<GroupName>'

1-5. CIDR이 0.0.0.0/0이고 포트가 80인 Security Group 정보 출력

$ aws ec2 describe-security-groups --filters 'Name=ip-permission.cidr,Values=0.0.0.0/0' 'Name=ip-permission.to-port,Values=80' --query 'SecurityGroups[?length(IpPermissions[?ToPort==`80` && contains(IpRanges[].CidrIp, `0.0.0.0/0`)]) > `0`].{GroupName: GroupName, TagName: Tags[?Key==`Name`].Value | [0]}'

만약 다음과 같이 실행하면 문제가 생긴다.

$ aws ec2 describe-security-groups --filters 'Name=ip-permission.cidr,Values=0.0.0.0/0' 'Name=ip-permission.to-port,Values=80'

이러면 CIDR가 0.0.0.0/0인 규칙이 있고 포트가 80포트인 규칙이 있으면 무조건 출력된다. 즉, 이런 것이다.

IPPERMISSIONS   80      tcp     80
IPRANGES        10.0.0.0/8
IPPERMISSIONS   8471    tcp     8471
IPRANGES        0.0.0.0/0
IPPERMISSIONS   8071    tcp     8071
IPRANGES        0.0.0.0/0
IPPERMISSIONS   443     tcp     443
IPRANGES        0.0.0.0/0