I have been spending a lot of time designing a Hybrid Cloud that consists of Openstack and public cloud platforms. In particular I have been spending a lot of time designing the AWS portion of the Hybrid Cloud Platform. Today I found myself continually needing to look up AWS public address space and then parsing out regions & services. Then I remembered something a mentor of mine told me…
if you are going to do something more than once, there is probably value in automating it.
I love writing command line tools and thus a short Python script was born. Since I rarely share Python code, even though I didn’t spend a lot time on this, and I certainly didn’t optimize it for DRY etc. I am sharing it anyway for others to use, enjoy and hack on,
but mainly to learn, which is…The entire purpose of the Tuxlabs site
I should mention I have strong views about when to use Python vs. Go a language I find myself writing in more and more and this tool falls under my rules for things that I should write in Go. So later as a follow up I will likely re-code this in Go and post the code for review & learning. For now here’s the Python code, enjoy !
Listing all IP Ranges
(env) ➜ aws python aws-ranges.py region ip_prefix service -------------- ----------------- -------------------- us-east-1 23.20.0.0/14 AMAZON ap-northeast-1 27.0.0.0/22 AMAZON ap-southeast-1 43.250.192.0/24 AMAZON ap-southeast-1 43.250.193.0/24 AMAZON eu-west-1 46.51.128.0/18 AMAZON eu-west-1 46.51.192.0/20 AMAZON ap-southeast-1 46.51.216.0/21 AMAZON ap-northeast-1 46.51.224.0/19 AMAZON eu-west-1 46.137.0.0/17 AMAZON eu-west-1 46.137.128.0/18 AMAZON ap-southeast-1 46.137.192.0/19 AMAZON ap-southeast-1 46.137.224.0/19 AMAZON us-east-1 50.16.0.0/15 AMAZON us-west-1 50.18.0.0/16 AMAZON us-east-1 50.19.0.0/16 AMAZON us-west-2 50.112.0.0/16 AMAZON us-east-1 52.0.0.0/15 AMAZON us-east-1 52.2.0.0/15 AMAZON us-east-1 52.4.0.0/14 AMAZON us-west-1 52.8.0.0/16 AMAZON us-west-1 52.9.0.0/16 AMAZON us-west-2 52.10.0.0/15 AMAZON us-west-2 52.12.0.0/15 AMAZON eu-west-1 52.16.0.0/15 AMAZON eu-west-1 52.18.0.0/15 AMAZON us-east-1 52.20.0.0/14 AMAZON us-west-2 52.24.0.0/14 AMAZON eu-central-1 52.28.0.0/16 AMAZON eu-central-1 52.29.0.0/16 AMAZON eu-west-1 52.30.0.0/15 AMAZON us-west-2 52.32.0.0/14 AMAZON us-west-2 52.36.0.0/14 AMAZON us-west-2 52.40.0.0/14 AMAZON eu-west-1 52.48.0.0/14 AMAZON us-west-1 52.52.0.0/15 AMAZON eu-central-1 52.58.0.0/15 AMAZON ap-southeast-2 52.62.0.0/15 AMAZON ap-southeast-2 52.64.0.0/17 AMAZON ap-southeast-2 52.64.128.0/17 AMAZON ap-southeast-2 52.65.0.0/16 AMAZON sa-east-1 52.67.0.0/16 AMAZON ap-northeast-1 52.68.0.0/15 AMAZON us-east-1 52.70.0.0/15 AMAZON us-east-1 52.72.0.0/15 AMAZON ap-southeast-1 52.74.0.0/16 AMAZON ap-southeast-1 52.76.0.0/17 AMAZON ap-southeast-1 52.76.128.0/17 AMAZON ap-southeast-1 52.77.0.0/16 AMAZON ap-northeast-2 52.79.0.0/16 AMAZON GLOBAL 52.84.0.0/15 AMAZON us-east-1 52.86.0.0/15 AMAZON us-west-2 52.88.0.0/15 AMAZON us-east-1 52.90.0.0/15 AMAZON ap-northeast-2 52.92.0.0/20 AMAZON us-east-1 52.92.16.0/20 AMAZON us-west-2 52.92.32.0/22 AMAZON sa-east-1 52.92.39.0/24 AMAZON eu-west-1 52.92.40.0/21 AMAZON us-west-1 52.92.48.0/22 AMAZON ap-southeast-2 52.92.52.0/22 AMAZON ap-southeast-1 52.92.56.0/22 AMAZON ap-northeast-1 52.92.60.0/22 AMAZON sa-east-1 52.92.64.0/22 AMAZON eu-central-1 52.92.68.0/22 AMAZON sa-east-1 52.92.72.0/22 AMAZON us-gov-west-1 52.92.252.0/22 AMAZON eu-west-1 52.93.0.0/24 AMAZON us-east-1 52.93.1.0/24 AMAZON eu-west-1 52.93.2.0/24 AMAZON us-east-1 52.93.3.0/24 AMAZON ap-southeast-1 52.93.8.0/22 AMAZON us-east-1 52.94.0.0/22 AMAZON eu-west-1 52.94.5.0/24 AMAZON ap-northeast-2 52.94.6.0/24 AMAZON sa-east-1 52.94.7.0/24 AMAZON ap-northeast-1 52.94.8.0/24 AMAZON us-gov-west-1 52.94.9.0/24 AMAZON us-west-2 52.94.10.0/24 AMAZON ap-southeast-1 52.94.11.0/24 AMAZON us-west-1 52.94.12.0/24 AMAZON ap-southeast-2 52.94.13.0/24 AMAZON us-west-1 52.94.14.0/24 AMAZON us-east-1 52.94.254.0/23 AMAZON ap-northeast-1 52.95.30.0/23 AMAZON ap-northeast-1 52.95.34.0/24 AMAZON ap-southeast-1 52.95.35.0/24 AMAZON ap-southeast-2 52.95.36.0/22 AMAZON us-east-1 52.95.48.0/22 AMAZON us-east-1 52.95.52.0/22 AMAZON ap-northeast-1 52.95.56.0/22 AMAZON eu-west-1 52.95.60.0/24 AMAZON eu-west-1 52.95.61.0/24 AMAZON us-east-1 52.95.62.0/24 AMAZON us-east-1 52.95.63.0/24 AMAZON ap-northeast-2 52.95.192.0/20 AMAZON ap-southeast-1 52.95.212.0/22 AMAZON sa-east-1 52.95.240.0/24 AMAZON ap-southeast-2 52.95.241.0/24 AMAZON ap-southeast-1 52.95.242.0/24 AMAZON ap-northeast-1 52.95.243.0/24 AMAZON eu-west-1 52.95.244.0/24 AMAZON us-east-1 52.95.245.0/24 AMAZON us-west-1 52.95.246.0/24 AMAZON us-west-2 52.95.247.0/24 AMAZON eu-central-1 52.95.248.0/24 AMAZON cn-north-1 52.95.249.0/24 AMAZON ap-northeast-2 52.95.252.0/24 AMAZON sa-east-1 52.95.255.0/28 AMAZON ap-southeast-2 52.95.255.16/28 AMAZON ap-southeast-1 52.95.255.32/28 AMAZON ap-northeast-1 52.95.255.48/28 AMAZON eu-west-1 52.95.255.64/28 AMAZON us-east-1 52.95.255.80/28 AMAZON us-west-1 52.95.255.96/28 AMAZON us-west-2 52.95.255.112/28 AMAZON eu-central-1 52.95.255.128/28 AMAZON cn-north-1 52.95.255.144/28 AMAZON ap-northeast-1 52.192.0.0/15 AMAZON ap-northeast-1 52.196.0.0/14 AMAZON us-east-1 52.200.0.0/13 AMAZON eu-west-1 52.208.0.0/13 AMAZON ap-southeast-1 52.220.0.0/15 AMAZON ap-northeast-1 54.64.0.0/15 AMAZON ap-southeast-2 54.66.0.0/16 AMAZON us-west-1 54.67.0.0/16 AMAZON us-west-2 54.68.0.0/14 AMAZON eu-west-1 54.72.0.0/15 AMAZON eu-west-1 54.74.0.0/15 AMAZON eu-west-1 54.76.0.0/15 AMAZON eu-west-1 54.78.0.0/16 AMAZON ap-southeast-2 54.79.0.0/16 AMAZON us-east-1 54.80.0.0/13 AMAZON us-east-1 54.88.0.0/14 AMAZON ap-northeast-1 54.92.0.0/17 AMAZON us-east-1 54.92.128.0/17 AMAZON eu-central-1 54.93.0.0/16 AMAZON sa-east-1 54.94.0.0/16 AMAZON ap-northeast-1 54.95.0.0/16 AMAZON us-east-1 54.144.0.0/14 AMAZON us-west-2 54.148.0.0/15 AMAZON ap-northeast-1 54.150.0.0/16 AMAZON us-west-1 54.151.0.0/17 AMAZON ap-southeast-1 54.151.128.0/17 AMAZON us-east-1 54.152.0.0/16 AMAZON us-west-1 54.153.0.0/17 AMAZON ap-southeast-2 54.153.128.0/17 AMAZON eu-west-1 54.154.0.0/16 AMAZON eu-west-1 54.155.0.0/16 AMAZON us-east-1 54.156.0.0/14 AMAZON us-east-1 54.160.0.0/13 AMAZON ap-northeast-1 54.168.0.0/16 AMAZON ap-southeast-1 54.169.0.0/16 AMAZON eu-west-1 54.170.0.0/15 AMAZON us-east-1 54.172.0.0/15 AMAZON us-east-1 54.174.0.0/15 AMAZON us-west-1 54.176.0.0/15 AMAZON ap-northeast-1 54.178.0.0/16 AMAZON ap-southeast-1 54.179.0.0/16 AMAZON GLOBAL 54.182.0.0/16 AMAZON us-west-1 54.183.0.0/16 AMAZON us-west-2 54.184.0.0/13 AMAZON GLOBAL 54.192.0.0/16 AMAZON us-west-1 54.193.0.0/16 AMAZON eu-west-1 54.194.0.0/15 AMAZON us-east-1 54.196.0.0/15 AMAZON us-east-1 54.198.0.0/16 AMAZON ap-northeast-1 54.199.0.0/16 AMAZON us-west-2 54.200.0.0/15 AMAZON us-west-2 54.202.0.0/15 AMAZON us-east-1 54.204.0.0/15 AMAZON ap-southeast-2 54.206.0.0/16 AMAZON sa-east-1 54.207.0.0/16 AMAZON us-east-1 54.208.0.0/15 AMAZON us-east-1 54.210.0.0/15 AMAZON us-west-2 54.212.0.0/15 AMAZON us-west-2 54.214.0.0/16 AMAZON us-west-1 54.215.0.0/16 AMAZON eu-west-1 54.216.0.0/15 AMAZON us-west-2 54.218.0.0/16 AMAZON us-west-1 54.219.0.0/16 AMAZON eu-west-1 54.220.0.0/16 AMAZON us-east-1 54.221.0.0/16 AMAZON cn-north-1 54.222.0.0/19 AMAZON cn-north-1 54.222.128.0/17 AMAZON cn-north-1 54.223.0.0/16 AMAZON us-east-1 54.224.0.0/15 AMAZON us-east-1 54.226.0.0/15 AMAZON eu-west-1 54.228.0.0/16 AMAZON eu-west-1 54.229.0.0/16 AMAZON GLOBAL 54.230.0.0/16 AMAZON us-east-1 54.231.0.0/17 AMAZON eu-west-1 54.231.128.0/19 AMAZON us-west-2 54.231.160.0/19 AMAZON eu-central-1 54.231.192.0/20 AMAZON cn-north-1 54.231.208.0/20 AMAZON ap-northeast-1 54.231.224.0/21 AMAZON us-west-1 54.231.232.0/21 AMAZON ap-southeast-1 54.231.240.0/22 AMAZON us-east-1 54.231.244.0/22 AMAZON ap-southeast-2 54.231.248.0/22 AMAZON ap-southeast-2 54.231.252.0/24 AMAZON sa-east-1 54.231.253.0/24 AMAZON us-gov-west-1 54.231.254.0/24 AMAZON sa-east-1 54.232.0.0/16 AMAZON sa-east-1 54.233.0.0/18 AMAZON sa-east-1 54.233.64.0/18 AMAZON sa-east-1 54.233.128.0/17 AMAZON us-east-1 54.234.0.0/15 AMAZON us-east-1 54.236.0.0/15 AMAZON ap-northeast-1 54.238.0.0/16 AMAZON us-west-2 54.239.2.0/23 AMAZON eu-central-1 54.239.4.0/22 AMAZON us-east-1 54.239.8.0/21 AMAZON us-east-1 54.239.16.0/20 AMAZON eu-west-1 54.239.32.0/21 AMAZON us-west-2 54.239.48.0/22 AMAZON ap-northeast-1 54.239.52.0/23 AMAZON eu-central-1 54.239.54.0/23 AMAZON eu-central-1 54.239.56.0/21 AMAZON ap-northeast-1 54.239.96.0/24 AMAZON us-east-1 54.239.98.0/24 AMAZON eu-west-1 54.239.99.0/24 AMAZON eu-west-1 54.239.100.0/23 AMAZON us-east-1 54.239.104.0/23 AMAZON us-east-1 54.239.108.0/22 AMAZON eu-west-1 54.239.114.0/24 AMAZON ap-northeast-2 54.239.116.0/22 AMAZON ap-northeast-2 54.239.120.0/21 AMAZON GLOBAL 54.239.128.0/18 AMAZON GLOBAL 54.239.192.0/19 AMAZON GLOBAL 54.240.128.0/18 AMAZON ap-southeast-2 54.240.192.0/22 AMAZON us-east-1 54.240.196.0/24 AMAZON eu-west-1 54.240.197.0/24 AMAZON us-west-1 54.240.198.0/24 AMAZON ap-southeast-1 54.240.199.0/24 AMAZON ap-northeast-1 54.240.200.0/24 AMAZON us-east-1 54.240.202.0/24 AMAZON ap-southeast-2 54.240.203.0/24 AMAZON ap-southeast-2 54.240.204.0/22 AMAZON us-east-1 54.240.208.0/22 AMAZON us-west-1 54.240.212.0/22 AMAZON us-east-1 54.240.216.0/22 AMAZON eu-west-1 54.240.220.0/22 AMAZON ap-northeast-1 54.240.225.0/24 AMAZON ap-southeast-1 54.240.226.0/24 AMAZON ap-southeast-1 54.240.227.0/24 AMAZON us-east-1 54.240.228.0/23 AMAZON us-west-2 54.240.230.0/23 AMAZON us-east-1 54.240.232.0/22 AMAZON ap-northeast-2 54.240.236.0/22 AMAZON eu-central-1 54.240.240.0/24 AMAZON sa-east-1 54.240.244.0/22 AMAZON us-west-2 54.240.248.0/21 AMAZON us-west-1 54.241.0.0/16 AMAZON us-east-1 54.242.0.0/15 AMAZON us-west-2 54.244.0.0/16 AMAZON us-west-2 54.245.0.0/16 AMAZON eu-west-1 54.246.0.0/16 AMAZON eu-west-1 54.247.0.0/16 AMAZON ap-northeast-1 54.248.0.0/15 AMAZON ap-northeast-1 54.250.0.0/16 AMAZON ap-southeast-1 54.251.0.0/16 AMAZON ap-southeast-2 54.252.0.0/16 AMAZON ap-southeast-2 54.253.0.0/16 AMAZON ap-southeast-1 54.254.0.0/16 AMAZON ap-southeast-1 54.255.0.0/16 AMAZON us-east-1 67.202.0.0/18 AMAZON us-east-1 72.21.192.0/19 AMAZON us-east-1 72.44.32.0/19 AMAZON us-east-1 75.101.128.0/17 AMAZON eu-west-1 79.125.0.0/17 AMAZON eu-west-1 87.238.80.0/21 AMAZON us-gov-west-1 96.127.0.0/17 AMAZON ap-northeast-1 103.4.8.0/21 AMAZON ap-southeast-1 103.246.148.0/23 AMAZON ap-northeast-1 103.246.150.0/23 AMAZON us-east-1 107.20.0.0/14 AMAZON ap-southeast-1 122.248.192.0/18 AMAZON us-east-1 172.96.97.0/24 AMAZON us-east-1 174.129.0.0/16 AMAZON ap-southeast-1 175.41.128.0/18 AMAZON ap-northeast-1 175.41.192.0/18 AMAZON ap-northeast-1 176.32.64.0/19 AMAZON us-east-1 176.32.96.0/21 AMAZON eu-west-1 176.32.104.0/21 AMAZON us-west-1 176.32.112.0/21 AMAZON us-east-1 176.32.120.0/22 AMAZON us-west-2 176.32.125.0/25 AMAZON ap-northeast-1 176.34.0.0/19 AMAZON ap-northeast-1 176.34.32.0/19 AMAZON eu-west-1 176.34.64.0/18 AMAZON eu-west-1 176.34.128.0/17 AMAZON sa-east-1 177.71.128.0/17 AMAZON sa-east-1 177.72.240.0/21 AMAZON eu-west-1 178.236.0.0/20 AMAZON us-west-1 184.72.0.0/18 AMAZON us-east-1 184.72.64.0/18 AMAZON us-east-1 184.72.128.0/17 AMAZON us-east-1 184.73.0.0/16 AMAZON us-west-1 184.169.128.0/17 AMAZON eu-west-1 185.48.120.0/22 AMAZON ap-southeast-1 203.83.220.0/22 AMAZON us-west-1 204.236.128.0/18 AMAZON us-east-1 204.236.192.0/18 AMAZON us-west-1 204.246.160.0/22 AMAZON GLOBAL 204.246.164.0/22 AMAZON GLOBAL 204.246.168.0/22 AMAZON GLOBAL 204.246.174.0/23 AMAZON GLOBAL 204.246.176.0/20 AMAZON GLOBAL 205.251.192.0/19 AMAZON us-east-1 205.251.224.0/22 AMAZON us-west-1 205.251.228.0/22 AMAZON us-west-2 205.251.232.0/22 AMAZON us-gov-west-1 205.251.236.0/22 AMAZON us-east-1 205.251.240.0/22 AMAZON us-east-1 205.251.244.0/23 AMAZON us-east-1 205.251.247.0/24 AMAZON us-east-1 205.251.248.0/24 AMAZON GLOBAL 205.251.249.0/24 AMAZON GLOBAL 205.251.250.0/23 AMAZON GLOBAL 205.251.252.0/23 AMAZON GLOBAL 205.251.254.0/24 AMAZON us-east-1 205.251.255.0/24 AMAZON us-east-1 207.171.160.0/20 AMAZON us-east-1 207.171.176.0/20 AMAZON GLOBAL 216.137.32.0/19 AMAZON us-east-1 216.182.224.0/20 AMAZON us-east-1 23.20.0.0/14 EC2 eu-west-1 46.51.128.0/18 EC2 eu-west-1 46.51.192.0/20 EC2 ap-southeast-1 46.51.216.0/21 EC2 ap-northeast-1 46.51.224.0/19 EC2 eu-west-1 46.137.0.0/17 EC2 eu-west-1 46.137.128.0/18 EC2 ap-southeast-1 46.137.192.0/19 EC2 ap-southeast-1 46.137.224.0/19 EC2 us-east-1 50.16.0.0/15 EC2 us-west-1 50.18.0.0/16 EC2 us-east-1 50.19.0.0/16 EC2 us-west-2 50.112.0.0/16 EC2 us-east-1 52.0.0.0/15 EC2 us-east-1 52.2.0.0/15 EC2 us-east-1 52.4.0.0/14 EC2 us-west-1 52.8.0.0/16 EC2 us-west-1 52.9.0.0/16 EC2 us-west-2 52.10.0.0/15 EC2 us-west-2 52.12.0.0/15 EC2 eu-west-1 52.16.0.0/15 EC2 eu-west-1 52.18.0.0/15 EC2 us-east-1 52.20.0.0/14 EC2 us-west-2 52.24.0.0/14 EC2 eu-central-1 52.28.0.0/16 EC2 eu-central-1 52.29.0.0/16 EC2 eu-west-1 52.30.0.0/15 EC2 us-west-2 52.32.0.0/14 EC2 us-west-2 52.36.0.0/14 EC2 us-west-2 52.40.0.0/14 EC2 eu-west-1 52.48.0.0/14 EC2 us-west-1 52.52.0.0/15 EC2 eu-central-1 52.58.0.0/15 EC2 ap-southeast-2 52.62.0.0/15 EC2 ap-southeast-2 52.64.0.0/17 EC2 ap-southeast-2 52.64.128.0/17 EC2 ap-southeast-2 52.65.0.0/16 EC2 sa-east-1 52.67.0.0/16 EC2 ap-northeast-1 52.68.0.0/15 EC2 us-east-1 52.70.0.0/15 EC2 us-east-1 52.72.0.0/15 EC2 ap-southeast-1 52.74.0.0/16 EC2 ap-southeast-1 52.76.0.0/17 EC2 ap-southeast-1 52.76.128.0/17 EC2 ap-southeast-1 52.77.0.0/16 EC2 ap-northeast-2 52.79.0.0/16 EC2 us-east-1 52.86.0.0/15 EC2 us-west-2 52.88.0.0/15 EC2 us-east-1 52.90.0.0/15 EC2 sa-east-1 52.95.240.0/24 EC2 ap-southeast-2 52.95.241.0/24 EC2 ap-southeast-1 52.95.242.0/24 EC2 ap-northeast-1 52.95.243.0/24 EC2 eu-west-1 52.95.244.0/24 EC2 us-east-1 52.95.245.0/24 EC2 us-west-1 52.95.246.0/24 EC2 us-west-2 52.95.247.0/24 EC2 eu-central-1 52.95.248.0/24 EC2 cn-north-1 52.95.249.0/24 EC2 ap-northeast-2 52.95.252.0/24 EC2 sa-east-1 52.95.255.0/28 EC2 ap-southeast-2 52.95.255.16/28 EC2 ap-southeast-1 52.95.255.32/28 EC2 ap-northeast-1 52.95.255.48/28 EC2 eu-west-1 52.95.255.64/28 EC2 us-east-1 52.95.255.80/28 EC2 us-west-1 52.95.255.96/28 EC2 us-west-2 52.95.255.112/28 EC2 eu-central-1 52.95.255.128/28 EC2 cn-north-1 52.95.255.144/28 EC2 ap-northeast-1 52.192.0.0/15 EC2 ap-northeast-1 52.196.0.0/14 EC2 us-east-1 52.200.0.0/13 EC2 eu-west-1 52.208.0.0/13 EC2 ap-southeast-1 52.220.0.0/15 EC2 ap-northeast-1 54.64.0.0/15 EC2 ap-southeast-2 54.66.0.0/16 EC2 us-west-1 54.67.0.0/16 EC2 us-west-2 54.68.0.0/14 EC2 eu-west-1 54.72.0.0/15 EC2 eu-west-1 54.74.0.0/15 EC2 eu-west-1 54.76.0.0/15 EC2 eu-west-1 54.78.0.0/16 EC2 ap-southeast-2 54.79.0.0/16 EC2 us-east-1 54.80.0.0/13 EC2 us-east-1 54.88.0.0/14 EC2 ap-northeast-1 54.92.0.0/17 EC2 us-east-1 54.92.128.0/17 EC2 eu-central-1 54.93.0.0/16 EC2 sa-east-1 54.94.0.0/16 EC2 ap-northeast-1 54.95.0.0/16 EC2 us-east-1 54.144.0.0/14 EC2 us-west-2 54.148.0.0/15 EC2 ap-northeast-1 54.150.0.0/16 EC2 us-west-1 54.151.0.0/17 EC2 ap-southeast-1 54.151.128.0/17 EC2 us-east-1 54.152.0.0/16 EC2 us-west-1 54.153.0.0/17 EC2 ap-southeast-2 54.153.128.0/17 EC2 eu-west-1 54.154.0.0/16 EC2 eu-west-1 54.155.0.0/16 EC2 us-east-1 54.156.0.0/14 EC2 us-east-1 54.160.0.0/13 EC2 ap-northeast-1 54.168.0.0/16 EC2 ap-southeast-1 54.169.0.0/16 EC2 eu-west-1 54.170.0.0/15 EC2 us-east-1 54.172.0.0/15 EC2 us-east-1 54.174.0.0/15 EC2 us-west-1 54.176.0.0/15 EC2 ap-northeast-1 54.178.0.0/16 EC2 ap-southeast-1 54.179.0.0/16 EC2 us-west-1 54.183.0.0/16 EC2 us-west-2 54.184.0.0/13 EC2 us-west-1 54.193.0.0/16 EC2 eu-west-1 54.194.0.0/15 EC2 us-east-1 54.196.0.0/15 EC2 us-east-1 54.198.0.0/16 EC2 ap-northeast-1 54.199.0.0/16 EC2 us-west-2 54.200.0.0/15 EC2 us-west-2 54.202.0.0/15 EC2 us-east-1 54.204.0.0/15 EC2 ap-southeast-2 54.206.0.0/16 EC2 sa-east-1 54.207.0.0/16 EC2 us-east-1 54.208.0.0/15 EC2 us-east-1 54.210.0.0/15 EC2 us-west-2 54.212.0.0/15 EC2 us-west-2 54.214.0.0/16 EC2 us-west-1 54.215.0.0/16 EC2 eu-west-1 54.216.0.0/15 EC2 us-west-2 54.218.0.0/16 EC2 us-west-1 54.219.0.0/16 EC2 eu-west-1 54.220.0.0/16 EC2 us-east-1 54.221.0.0/16 EC2 cn-north-1 54.222.128.0/17 EC2 cn-north-1 54.223.0.0/16 EC2 us-east-1 54.224.0.0/15 EC2 us-east-1 54.226.0.0/15 EC2 eu-west-1 54.228.0.0/16 EC2 eu-west-1 54.229.0.0/16 EC2 sa-east-1 54.232.0.0/16 EC2 sa-east-1 54.233.0.0/18 EC2 sa-east-1 54.233.64.0/18 EC2 sa-east-1 54.233.128.0/17 EC2 us-east-1 54.234.0.0/15 EC2 us-east-1 54.236.0.0/15 EC2 ap-northeast-1 54.238.0.0/16 EC2 us-west-1 54.241.0.0/16 EC2 us-east-1 54.242.0.0/15 EC2 us-west-2 54.244.0.0/16 EC2 us-west-2 54.245.0.0/16 EC2 eu-west-1 54.246.0.0/16 EC2 eu-west-1 54.247.0.0/16 EC2 ap-northeast-1 54.248.0.0/15 EC2 ap-northeast-1 54.250.0.0/16 EC2 ap-southeast-1 54.251.0.0/16 EC2 ap-southeast-2 54.252.0.0/16 EC2 ap-southeast-2 54.253.0.0/16 EC2 ap-southeast-1 54.254.0.0/16 EC2 ap-southeast-1 54.255.0.0/16 EC2 us-east-1 67.202.0.0/18 EC2 us-east-1 72.44.32.0/19 EC2 us-east-1 75.101.128.0/17 EC2 eu-west-1 79.125.0.0/17 EC2 us-gov-west-1 96.127.0.0/17 EC2 ap-northeast-1 103.4.8.0/21 EC2 us-east-1 107.20.0.0/14 EC2 ap-southeast-1 122.248.192.0/18 EC2 us-east-1 174.129.0.0/16 EC2 ap-southeast-1 175.41.128.0/18 EC2 ap-northeast-1 175.41.192.0/18 EC2 ap-northeast-1 176.32.64.0/19 EC2 ap-northeast-1 176.34.0.0/19 EC2 ap-northeast-1 176.34.32.0/19 EC2 eu-west-1 176.34.64.0/18 EC2 eu-west-1 176.34.128.0/17 EC2 sa-east-1 177.71.128.0/17 EC2 us-west-1 184.72.0.0/18 EC2 us-east-1 184.72.64.0/18 EC2 us-east-1 184.72.128.0/17 EC2 us-east-1 184.73.0.0/16 EC2 us-west-1 184.169.128.0/17 EC2 eu-west-1 185.48.120.0/22 EC2 us-west-1 204.236.128.0/18 EC2 us-east-1 204.236.192.0/18 EC2 us-east-1 216.182.224.0/20 EC2 GLOBAL 205.251.192.0/21 ROUTE53 us-west-1 54.183.255.128/26 ROUTE53_HEALTHCHECKS eu-west-1 54.228.16.0/26 ROUTE53_HEALTHCHECKS sa-east-1 54.232.40.64/26 ROUTE53_HEALTHCHECKS us-west-1 54.241.32.64/26 ROUTE53_HEALTHCHECKS us-east-1 54.243.31.192/26 ROUTE53_HEALTHCHECKS us-west-2 54.244.52.192/26 ROUTE53_HEALTHCHECKS us-west-2 54.245.168.0/26 ROUTE53_HEALTHCHECKS ap-northeast-1 54.248.220.0/26 ROUTE53_HEALTHCHECKS ap-northeast-1 54.250.253.192/26 ROUTE53_HEALTHCHECKS ap-southeast-1 54.251.31.128/26 ROUTE53_HEALTHCHECKS ap-southeast-2 54.252.79.128/26 ROUTE53_HEALTHCHECKS ap-southeast-2 54.252.254.192/26 ROUTE53_HEALTHCHECKS ap-southeast-1 54.255.254.192/26 ROUTE53_HEALTHCHECKS us-east-1 107.23.255.0/26 ROUTE53_HEALTHCHECKS eu-west-1 176.34.159.192/26 ROUTE53_HEALTHCHECKS sa-east-1 177.71.207.128/26 ROUTE53_HEALTHCHECKS GLOBAL 52.84.0.0/15 CLOUDFRONT GLOBAL 54.182.0.0/16 CLOUDFRONT GLOBAL 54.192.0.0/16 CLOUDFRONT GLOBAL 54.230.0.0/16 CLOUDFRONT GLOBAL 54.239.128.0/18 CLOUDFRONT GLOBAL 54.239.192.0/19 CLOUDFRONT GLOBAL 54.240.128.0/18 CLOUDFRONT GLOBAL 204.246.164.0/22 CLOUDFRONT GLOBAL 204.246.168.0/22 CLOUDFRONT GLOBAL 204.246.174.0/23 CLOUDFRONT GLOBAL 204.246.176.0/20 CLOUDFRONT GLOBAL 205.251.192.0/19 CLOUDFRONT GLOBAL 205.251.249.0/24 CLOUDFRONT GLOBAL 205.251.250.0/23 CLOUDFRONT GLOBAL 205.251.252.0/23 CLOUDFRONT GLOBAL 205.251.254.0/24 CLOUDFRONT GLOBAL 216.137.32.0/19 CLOUDFRONT (env) ➜ aws
Filtering
(env) ➜ aws python aws-ranges.py -r sa-east-1 region ip_prefix service --------- ----------------- -------------------- sa-east-1 52.67.0.0/16 AMAZON sa-east-1 52.92.39.0/24 AMAZON sa-east-1 52.92.64.0/22 AMAZON sa-east-1 52.92.72.0/22 AMAZON sa-east-1 52.94.7.0/24 AMAZON sa-east-1 52.95.240.0/24 AMAZON sa-east-1 52.95.255.0/28 AMAZON sa-east-1 54.94.0.0/16 AMAZON sa-east-1 54.207.0.0/16 AMAZON sa-east-1 54.231.253.0/24 AMAZON sa-east-1 54.232.0.0/16 AMAZON sa-east-1 54.233.0.0/18 AMAZON sa-east-1 54.233.64.0/18 AMAZON sa-east-1 54.233.128.0/17 AMAZON sa-east-1 54.240.244.0/22 AMAZON sa-east-1 177.71.128.0/17 AMAZON sa-east-1 177.72.240.0/21 AMAZON sa-east-1 52.67.0.0/16 EC2 sa-east-1 52.95.240.0/24 EC2 sa-east-1 52.95.255.0/28 EC2 sa-east-1 54.94.0.0/16 EC2 sa-east-1 54.207.0.0/16 EC2 sa-east-1 54.232.0.0/16 EC2 sa-east-1 54.233.0.0/18 EC2 sa-east-1 54.233.64.0/18 EC2 sa-east-1 54.233.128.0/17 EC2 sa-east-1 177.71.128.0/17 EC2 sa-east-1 54.232.40.64/26 ROUTE53_HEALTHCHECKS sa-east-1 177.71.207.128/26 ROUTE53_HEALTHCHECKS (env) ➜ aws python aws-ranges.py -r sa-east-1 -s ec2 region ip_prefix service --------- --------------- --------- sa-east-1 52.67.0.0/16 EC2 sa-east-1 52.95.240.0/24 EC2 sa-east-1 52.95.255.0/28 EC2 sa-east-1 54.94.0.0/16 EC2 sa-east-1 54.207.0.0/16 EC2 sa-east-1 54.232.0.0/16 EC2 sa-east-1 54.233.0.0/18 EC2 sa-east-1 54.233.64.0/18 EC2 sa-east-1 54.233.128.0/17 EC2 sa-east-1 177.71.128.0/17 EC2 (env) ➜ aws
The code
#!/usr/bin/env python
#March 8th 2016
__author__ = 'Jason Riedel'
__description__ = 'Grabs IP ranges from amazon'
__version__ = '1.0'
url = 'https://ip-ranges.amazonaws.com/ip-ranges.json'
import requests
import json
import argparse
from tabulate import tabulate
parser = argparse.ArgumentParser()
parser.add_argument('-r', '--region', action="store", dest="regionFilter", required=False, help="Region to filter/return data for: us-west, ap-southeast-1, us-east-1")
parser.add_argument('-s', '--service', action="store", dest="serviceFilter", required=False, help="Service to filter/return data for: AMAZON, CLOUDFRONT, EC2")
parser.add_argument('-rl', action="store_true", dest="listRegions", required=False, help="List known regions")
parser.add_argument('-sl', action="store_true", dest="listService", required=False, help="List known services")
args = parser.parse_args()
def get_json(url):
try:
r = requests.get(url)
jdata = r.json()
except Exception, e:
print "ERROR - %s failed: %s" % (url, e)
return jdata
def list_filter_json(jdata, filter_on):
filtered_data = []
for i in range(len(jdata['prefixes'])):
filtered_data.append(jdata['prefixes'][i][filter_on])
return filtered_data
def filter_json(jdata, filters):
filtered_data = []
for i in range(len(jdata['prefixes'])):
if 'region' in filters and 'service' in filters:
if filters['region'].lower() in jdata['prefixes'][i]['region'].lower() and filters['service'].lower() in jdata['prefixes'][i]['service'].lower():
filtered_data.append(jdata['prefixes'][i])
elif 'region' in filters:
if filters['region'].lower() in jdata['prefixes'][i]['region'].lower():
filtered_data.append(jdata['prefixes'][i])
elif 'service' in filters:
if filters['service'].lower() in jdata['prefixes'][i]['service'].lower():
filtered_data.append(jdata['prefixes'][i])
return filtered_data
def list_regions(jdata):
regions = set()
filtered_data = list_filter_json(jdata, 'region')
for region in filtered_data:
regions.add(region)
for region in sorted(regions):
print region
def list_services(jdata):
services = set()
filtered_data = list_filter_json(jdata, 'service')
for service in filtered_data:
services.add(service)
for service in sorted(services):
print service
def table_it(filtered_data):
print tabulate(filtered_data, headers="keys")
if __name__ == "__main__":
jdata = get_json(url)
if args.listRegions or args.listService:
if args.listRegions:
list_regions(jdata)
elif args.listService:
list_services(jdata)
else:
parser.print_help()
else:
if args.regionFilter or args.serviceFilter:
if args.regionFilter and args.serviceFilter:
filters = {'region': args.regionFilter, 'service': args.serviceFilter}
else:
if args.regionFilter:
filters = {'region': args.regionFilter}
if args.serviceFilter:
filters = {'service': args.serviceFilter}
filtered_data = filter_json(jdata, filters)
table_it(filtered_data)
else:
table_it(jdata['prefixes'])
Since 1995, I have written some form of code, but over the years my career has never taken shape with a primary focus on development. Instead in my various roles of Systems, Network, Application and Datacenter engineering & architecture, I have found excuses to let the inner code hacker in me, out. Allowing me to consistently pursue my passion for coding and automation within the scope of my daily duties. However, this approach has never allowed me to work on a development team and thus the necessity for using object oriented programming rarely has occurred.