====== Virtual Private Cloud (VPC) ====== FIXME intro blurb on VPC, AZ, subnets, IG / NAT gateway {{aws:st-setip_iot.png?300 |VPC with two AZ and subnets}} ===== Show unused Security Groups ===== #!/bin/bash #Get all security groups and check against network interfaces thety are allocated to. echo "" > security_groups.txt for SG in $(aws ec2 describe-security-groups --profile nonprod_admin | jq --raw-output '.[][] | [.GroupId, .GroupName, .Description ] | @csv') do echo $SG #echo $SG | tee security_groups.txt | cut -f1 -d | aws ec2 describe-network-interfaces --filters Name=group-id,Values=${SG} --profile nonprod_admin done # clean up temporary mess rm security_groups.txt ===== Get subnets in VPC ===== $ aws ec2 describe-subnets | jq .Subnets.[].SubnetId "subnet-1234abcdab7899876" "subnet-12341bcd207959876" ===== IPv4 Regex ===== This works in Cloudformation to tempate the allowed digits in and IPv4 address. Not exhaustively tested. "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(22))$" CF Template example:- "Parameters": { "VPCCIDR": { "AllowedPattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(22))$", "ConstraintDescription": "CIDR block parameter must be in the form x.x.x.x/22", "Default": "192.168.192.0/22", "Description": "CIDR block for VPC", "Type": "String" } This may bea better example:- [[https://ihateregex.io/expr/ip/]] ===== IPv6 Regex ===== FIXME