{"id":348,"date":"2016-03-09T05:42:25","date_gmt":"2016-03-09T05:42:25","guid":{"rendered":"http:\/\/tuxlabs.com\/?p=348"},"modified":"2016-03-10T05:23:10","modified_gmt":"2016-03-10T05:23:10","slug":"fun-with-python-tabular-aws-ip-ranges","status":"publish","type":"post","link":"https:\/\/tuxlabs.com\/?p=348","title":{"rendered":"Fun with Python, Tabular &#038; AWS IP ranges"},"content":{"rendered":"<p>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\u00a0AWS portion of the Hybrid Cloud Platform. Today I found myself continually needing to look up AWS public address space and then parsing out regions &amp; services. Then I remembered something a mentor of mine told me&#8230;<\/p>\n<blockquote><p>if you are going to do something more than once, there is probably value in automating it.<\/p><\/blockquote>\n<p>I love writing command line tools and thus a short Python script was born. Since I rarely share Python code, even though I didn&#8217;t spend a lot time on this, and I certainly didn&#8217;t optimize it for DRY etc. I am sharing it anyway for others to use, enjoy and hack on,<\/p>\n<blockquote><p>but mainly to learn, which is&#8230;The entire purpose of the Tuxlabs site<\/p><\/blockquote>\n<p>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 &amp; learning. For now here&#8217;s the Python code, enjoy !<\/p>\n<h3>Listing all IP Ranges<\/h3>\n<pre class=\"lang:default decode:true \">(env) \u279c  aws python aws-ranges.py\r\nregion          ip_prefix          service\r\n--------------  -----------------  --------------------\r\nus-east-1       23.20.0.0\/14       AMAZON\r\nap-northeast-1  27.0.0.0\/22        AMAZON\r\nap-southeast-1  43.250.192.0\/24    AMAZON\r\nap-southeast-1  43.250.193.0\/24    AMAZON\r\neu-west-1       46.51.128.0\/18     AMAZON\r\neu-west-1       46.51.192.0\/20     AMAZON\r\nap-southeast-1  46.51.216.0\/21     AMAZON\r\nap-northeast-1  46.51.224.0\/19     AMAZON\r\neu-west-1       46.137.0.0\/17      AMAZON\r\neu-west-1       46.137.128.0\/18    AMAZON\r\nap-southeast-1  46.137.192.0\/19    AMAZON\r\nap-southeast-1  46.137.224.0\/19    AMAZON\r\nus-east-1       50.16.0.0\/15       AMAZON\r\nus-west-1       50.18.0.0\/16       AMAZON\r\nus-east-1       50.19.0.0\/16       AMAZON\r\nus-west-2       50.112.0.0\/16      AMAZON\r\nus-east-1       52.0.0.0\/15        AMAZON\r\nus-east-1       52.2.0.0\/15        AMAZON\r\nus-east-1       52.4.0.0\/14        AMAZON\r\nus-west-1       52.8.0.0\/16        AMAZON\r\nus-west-1       52.9.0.0\/16        AMAZON\r\nus-west-2       52.10.0.0\/15       AMAZON\r\nus-west-2       52.12.0.0\/15       AMAZON\r\neu-west-1       52.16.0.0\/15       AMAZON\r\neu-west-1       52.18.0.0\/15       AMAZON\r\nus-east-1       52.20.0.0\/14       AMAZON\r\nus-west-2       52.24.0.0\/14       AMAZON\r\neu-central-1    52.28.0.0\/16       AMAZON\r\neu-central-1    52.29.0.0\/16       AMAZON\r\neu-west-1       52.30.0.0\/15       AMAZON\r\nus-west-2       52.32.0.0\/14       AMAZON\r\nus-west-2       52.36.0.0\/14       AMAZON\r\nus-west-2       52.40.0.0\/14       AMAZON\r\neu-west-1       52.48.0.0\/14       AMAZON\r\nus-west-1       52.52.0.0\/15       AMAZON\r\neu-central-1    52.58.0.0\/15       AMAZON\r\nap-southeast-2  52.62.0.0\/15       AMAZON\r\nap-southeast-2  52.64.0.0\/17       AMAZON\r\nap-southeast-2  52.64.128.0\/17     AMAZON\r\nap-southeast-2  52.65.0.0\/16       AMAZON\r\nsa-east-1       52.67.0.0\/16       AMAZON\r\nap-northeast-1  52.68.0.0\/15       AMAZON\r\nus-east-1       52.70.0.0\/15       AMAZON\r\nus-east-1       52.72.0.0\/15       AMAZON\r\nap-southeast-1  52.74.0.0\/16       AMAZON\r\nap-southeast-1  52.76.0.0\/17       AMAZON\r\nap-southeast-1  52.76.128.0\/17     AMAZON\r\nap-southeast-1  52.77.0.0\/16       AMAZON\r\nap-northeast-2  52.79.0.0\/16       AMAZON\r\nGLOBAL          52.84.0.0\/15       AMAZON\r\nus-east-1       52.86.0.0\/15       AMAZON\r\nus-west-2       52.88.0.0\/15       AMAZON\r\nus-east-1       52.90.0.0\/15       AMAZON\r\nap-northeast-2  52.92.0.0\/20       AMAZON\r\nus-east-1       52.92.16.0\/20      AMAZON\r\nus-west-2       52.92.32.0\/22      AMAZON\r\nsa-east-1       52.92.39.0\/24      AMAZON\r\neu-west-1       52.92.40.0\/21      AMAZON\r\nus-west-1       52.92.48.0\/22      AMAZON\r\nap-southeast-2  52.92.52.0\/22      AMAZON\r\nap-southeast-1  52.92.56.0\/22      AMAZON\r\nap-northeast-1  52.92.60.0\/22      AMAZON\r\nsa-east-1       52.92.64.0\/22      AMAZON\r\neu-central-1    52.92.68.0\/22      AMAZON\r\nsa-east-1       52.92.72.0\/22      AMAZON\r\nus-gov-west-1   52.92.252.0\/22     AMAZON\r\neu-west-1       52.93.0.0\/24       AMAZON\r\nus-east-1       52.93.1.0\/24       AMAZON\r\neu-west-1       52.93.2.0\/24       AMAZON\r\nus-east-1       52.93.3.0\/24       AMAZON\r\nap-southeast-1  52.93.8.0\/22       AMAZON\r\nus-east-1       52.94.0.0\/22       AMAZON\r\neu-west-1       52.94.5.0\/24       AMAZON\r\nap-northeast-2  52.94.6.0\/24       AMAZON\r\nsa-east-1       52.94.7.0\/24       AMAZON\r\nap-northeast-1  52.94.8.0\/24       AMAZON\r\nus-gov-west-1   52.94.9.0\/24       AMAZON\r\nus-west-2       52.94.10.0\/24      AMAZON\r\nap-southeast-1  52.94.11.0\/24      AMAZON\r\nus-west-1       52.94.12.0\/24      AMAZON\r\nap-southeast-2  52.94.13.0\/24      AMAZON\r\nus-west-1       52.94.14.0\/24      AMAZON\r\nus-east-1       52.94.254.0\/23     AMAZON\r\nap-northeast-1  52.95.30.0\/23      AMAZON\r\nap-northeast-1  52.95.34.0\/24      AMAZON\r\nap-southeast-1  52.95.35.0\/24      AMAZON\r\nap-southeast-2  52.95.36.0\/22      AMAZON\r\nus-east-1       52.95.48.0\/22      AMAZON\r\nus-east-1       52.95.52.0\/22      AMAZON\r\nap-northeast-1  52.95.56.0\/22      AMAZON\r\neu-west-1       52.95.60.0\/24      AMAZON\r\neu-west-1       52.95.61.0\/24      AMAZON\r\nus-east-1       52.95.62.0\/24      AMAZON\r\nus-east-1       52.95.63.0\/24      AMAZON\r\nap-northeast-2  52.95.192.0\/20     AMAZON\r\nap-southeast-1  52.95.212.0\/22     AMAZON\r\nsa-east-1       52.95.240.0\/24     AMAZON\r\nap-southeast-2  52.95.241.0\/24     AMAZON\r\nap-southeast-1  52.95.242.0\/24     AMAZON\r\nap-northeast-1  52.95.243.0\/24     AMAZON\r\neu-west-1       52.95.244.0\/24     AMAZON\r\nus-east-1       52.95.245.0\/24     AMAZON\r\nus-west-1       52.95.246.0\/24     AMAZON\r\nus-west-2       52.95.247.0\/24     AMAZON\r\neu-central-1    52.95.248.0\/24     AMAZON\r\ncn-north-1      52.95.249.0\/24     AMAZON\r\nap-northeast-2  52.95.252.0\/24     AMAZON\r\nsa-east-1       52.95.255.0\/28     AMAZON\r\nap-southeast-2  52.95.255.16\/28    AMAZON\r\nap-southeast-1  52.95.255.32\/28    AMAZON\r\nap-northeast-1  52.95.255.48\/28    AMAZON\r\neu-west-1       52.95.255.64\/28    AMAZON\r\nus-east-1       52.95.255.80\/28    AMAZON\r\nus-west-1       52.95.255.96\/28    AMAZON\r\nus-west-2       52.95.255.112\/28   AMAZON\r\neu-central-1    52.95.255.128\/28   AMAZON\r\ncn-north-1      52.95.255.144\/28   AMAZON\r\nap-northeast-1  52.192.0.0\/15      AMAZON\r\nap-northeast-1  52.196.0.0\/14      AMAZON\r\nus-east-1       52.200.0.0\/13      AMAZON\r\neu-west-1       52.208.0.0\/13      AMAZON\r\nap-southeast-1  52.220.0.0\/15      AMAZON\r\nap-northeast-1  54.64.0.0\/15       AMAZON\r\nap-southeast-2  54.66.0.0\/16       AMAZON\r\nus-west-1       54.67.0.0\/16       AMAZON\r\nus-west-2       54.68.0.0\/14       AMAZON\r\neu-west-1       54.72.0.0\/15       AMAZON\r\neu-west-1       54.74.0.0\/15       AMAZON\r\neu-west-1       54.76.0.0\/15       AMAZON\r\neu-west-1       54.78.0.0\/16       AMAZON\r\nap-southeast-2  54.79.0.0\/16       AMAZON\r\nus-east-1       54.80.0.0\/13       AMAZON\r\nus-east-1       54.88.0.0\/14       AMAZON\r\nap-northeast-1  54.92.0.0\/17       AMAZON\r\nus-east-1       54.92.128.0\/17     AMAZON\r\neu-central-1    54.93.0.0\/16       AMAZON\r\nsa-east-1       54.94.0.0\/16       AMAZON\r\nap-northeast-1  54.95.0.0\/16       AMAZON\r\nus-east-1       54.144.0.0\/14      AMAZON\r\nus-west-2       54.148.0.0\/15      AMAZON\r\nap-northeast-1  54.150.0.0\/16      AMAZON\r\nus-west-1       54.151.0.0\/17      AMAZON\r\nap-southeast-1  54.151.128.0\/17    AMAZON\r\nus-east-1       54.152.0.0\/16      AMAZON\r\nus-west-1       54.153.0.0\/17      AMAZON\r\nap-southeast-2  54.153.128.0\/17    AMAZON\r\neu-west-1       54.154.0.0\/16      AMAZON\r\neu-west-1       54.155.0.0\/16      AMAZON\r\nus-east-1       54.156.0.0\/14      AMAZON\r\nus-east-1       54.160.0.0\/13      AMAZON\r\nap-northeast-1  54.168.0.0\/16      AMAZON\r\nap-southeast-1  54.169.0.0\/16      AMAZON\r\neu-west-1       54.170.0.0\/15      AMAZON\r\nus-east-1       54.172.0.0\/15      AMAZON\r\nus-east-1       54.174.0.0\/15      AMAZON\r\nus-west-1       54.176.0.0\/15      AMAZON\r\nap-northeast-1  54.178.0.0\/16      AMAZON\r\nap-southeast-1  54.179.0.0\/16      AMAZON\r\nGLOBAL          54.182.0.0\/16      AMAZON\r\nus-west-1       54.183.0.0\/16      AMAZON\r\nus-west-2       54.184.0.0\/13      AMAZON\r\nGLOBAL          54.192.0.0\/16      AMAZON\r\nus-west-1       54.193.0.0\/16      AMAZON\r\neu-west-1       54.194.0.0\/15      AMAZON\r\nus-east-1       54.196.0.0\/15      AMAZON\r\nus-east-1       54.198.0.0\/16      AMAZON\r\nap-northeast-1  54.199.0.0\/16      AMAZON\r\nus-west-2       54.200.0.0\/15      AMAZON\r\nus-west-2       54.202.0.0\/15      AMAZON\r\nus-east-1       54.204.0.0\/15      AMAZON\r\nap-southeast-2  54.206.0.0\/16      AMAZON\r\nsa-east-1       54.207.0.0\/16      AMAZON\r\nus-east-1       54.208.0.0\/15      AMAZON\r\nus-east-1       54.210.0.0\/15      AMAZON\r\nus-west-2       54.212.0.0\/15      AMAZON\r\nus-west-2       54.214.0.0\/16      AMAZON\r\nus-west-1       54.215.0.0\/16      AMAZON\r\neu-west-1       54.216.0.0\/15      AMAZON\r\nus-west-2       54.218.0.0\/16      AMAZON\r\nus-west-1       54.219.0.0\/16      AMAZON\r\neu-west-1       54.220.0.0\/16      AMAZON\r\nus-east-1       54.221.0.0\/16      AMAZON\r\ncn-north-1      54.222.0.0\/19      AMAZON\r\ncn-north-1      54.222.128.0\/17    AMAZON\r\ncn-north-1      54.223.0.0\/16      AMAZON\r\nus-east-1       54.224.0.0\/15      AMAZON\r\nus-east-1       54.226.0.0\/15      AMAZON\r\neu-west-1       54.228.0.0\/16      AMAZON\r\neu-west-1       54.229.0.0\/16      AMAZON\r\nGLOBAL          54.230.0.0\/16      AMAZON\r\nus-east-1       54.231.0.0\/17      AMAZON\r\neu-west-1       54.231.128.0\/19    AMAZON\r\nus-west-2       54.231.160.0\/19    AMAZON\r\neu-central-1    54.231.192.0\/20    AMAZON\r\ncn-north-1      54.231.208.0\/20    AMAZON\r\nap-northeast-1  54.231.224.0\/21    AMAZON\r\nus-west-1       54.231.232.0\/21    AMAZON\r\nap-southeast-1  54.231.240.0\/22    AMAZON\r\nus-east-1       54.231.244.0\/22    AMAZON\r\nap-southeast-2  54.231.248.0\/22    AMAZON\r\nap-southeast-2  54.231.252.0\/24    AMAZON\r\nsa-east-1       54.231.253.0\/24    AMAZON\r\nus-gov-west-1   54.231.254.0\/24    AMAZON\r\nsa-east-1       54.232.0.0\/16      AMAZON\r\nsa-east-1       54.233.0.0\/18      AMAZON\r\nsa-east-1       54.233.64.0\/18     AMAZON\r\nsa-east-1       54.233.128.0\/17    AMAZON\r\nus-east-1       54.234.0.0\/15      AMAZON\r\nus-east-1       54.236.0.0\/15      AMAZON\r\nap-northeast-1  54.238.0.0\/16      AMAZON\r\nus-west-2       54.239.2.0\/23      AMAZON\r\neu-central-1    54.239.4.0\/22      AMAZON\r\nus-east-1       54.239.8.0\/21      AMAZON\r\nus-east-1       54.239.16.0\/20     AMAZON\r\neu-west-1       54.239.32.0\/21     AMAZON\r\nus-west-2       54.239.48.0\/22     AMAZON\r\nap-northeast-1  54.239.52.0\/23     AMAZON\r\neu-central-1    54.239.54.0\/23     AMAZON\r\neu-central-1    54.239.56.0\/21     AMAZON\r\nap-northeast-1  54.239.96.0\/24     AMAZON\r\nus-east-1       54.239.98.0\/24     AMAZON\r\neu-west-1       54.239.99.0\/24     AMAZON\r\neu-west-1       54.239.100.0\/23    AMAZON\r\nus-east-1       54.239.104.0\/23    AMAZON\r\nus-east-1       54.239.108.0\/22    AMAZON\r\neu-west-1       54.239.114.0\/24    AMAZON\r\nap-northeast-2  54.239.116.0\/22    AMAZON\r\nap-northeast-2  54.239.120.0\/21    AMAZON\r\nGLOBAL          54.239.128.0\/18    AMAZON\r\nGLOBAL          54.239.192.0\/19    AMAZON\r\nGLOBAL          54.240.128.0\/18    AMAZON\r\nap-southeast-2  54.240.192.0\/22    AMAZON\r\nus-east-1       54.240.196.0\/24    AMAZON\r\neu-west-1       54.240.197.0\/24    AMAZON\r\nus-west-1       54.240.198.0\/24    AMAZON\r\nap-southeast-1  54.240.199.0\/24    AMAZON\r\nap-northeast-1  54.240.200.0\/24    AMAZON\r\nus-east-1       54.240.202.0\/24    AMAZON\r\nap-southeast-2  54.240.203.0\/24    AMAZON\r\nap-southeast-2  54.240.204.0\/22    AMAZON\r\nus-east-1       54.240.208.0\/22    AMAZON\r\nus-west-1       54.240.212.0\/22    AMAZON\r\nus-east-1       54.240.216.0\/22    AMAZON\r\neu-west-1       54.240.220.0\/22    AMAZON\r\nap-northeast-1  54.240.225.0\/24    AMAZON\r\nap-southeast-1  54.240.226.0\/24    AMAZON\r\nap-southeast-1  54.240.227.0\/24    AMAZON\r\nus-east-1       54.240.228.0\/23    AMAZON\r\nus-west-2       54.240.230.0\/23    AMAZON\r\nus-east-1       54.240.232.0\/22    AMAZON\r\nap-northeast-2  54.240.236.0\/22    AMAZON\r\neu-central-1    54.240.240.0\/24    AMAZON\r\nsa-east-1       54.240.244.0\/22    AMAZON\r\nus-west-2       54.240.248.0\/21    AMAZON\r\nus-west-1       54.241.0.0\/16      AMAZON\r\nus-east-1       54.242.0.0\/15      AMAZON\r\nus-west-2       54.244.0.0\/16      AMAZON\r\nus-west-2       54.245.0.0\/16      AMAZON\r\neu-west-1       54.246.0.0\/16      AMAZON\r\neu-west-1       54.247.0.0\/16      AMAZON\r\nap-northeast-1  54.248.0.0\/15      AMAZON\r\nap-northeast-1  54.250.0.0\/16      AMAZON\r\nap-southeast-1  54.251.0.0\/16      AMAZON\r\nap-southeast-2  54.252.0.0\/16      AMAZON\r\nap-southeast-2  54.253.0.0\/16      AMAZON\r\nap-southeast-1  54.254.0.0\/16      AMAZON\r\nap-southeast-1  54.255.0.0\/16      AMAZON\r\nus-east-1       67.202.0.0\/18      AMAZON\r\nus-east-1       72.21.192.0\/19     AMAZON\r\nus-east-1       72.44.32.0\/19      AMAZON\r\nus-east-1       75.101.128.0\/17    AMAZON\r\neu-west-1       79.125.0.0\/17      AMAZON\r\neu-west-1       87.238.80.0\/21     AMAZON\r\nus-gov-west-1   96.127.0.0\/17      AMAZON\r\nap-northeast-1  103.4.8.0\/21       AMAZON\r\nap-southeast-1  103.246.148.0\/23   AMAZON\r\nap-northeast-1  103.246.150.0\/23   AMAZON\r\nus-east-1       107.20.0.0\/14      AMAZON\r\nap-southeast-1  122.248.192.0\/18   AMAZON\r\nus-east-1       172.96.97.0\/24     AMAZON\r\nus-east-1       174.129.0.0\/16     AMAZON\r\nap-southeast-1  175.41.128.0\/18    AMAZON\r\nap-northeast-1  175.41.192.0\/18    AMAZON\r\nap-northeast-1  176.32.64.0\/19     AMAZON\r\nus-east-1       176.32.96.0\/21     AMAZON\r\neu-west-1       176.32.104.0\/21    AMAZON\r\nus-west-1       176.32.112.0\/21    AMAZON\r\nus-east-1       176.32.120.0\/22    AMAZON\r\nus-west-2       176.32.125.0\/25    AMAZON\r\nap-northeast-1  176.34.0.0\/19      AMAZON\r\nap-northeast-1  176.34.32.0\/19     AMAZON\r\neu-west-1       176.34.64.0\/18     AMAZON\r\neu-west-1       176.34.128.0\/17    AMAZON\r\nsa-east-1       177.71.128.0\/17    AMAZON\r\nsa-east-1       177.72.240.0\/21    AMAZON\r\neu-west-1       178.236.0.0\/20     AMAZON\r\nus-west-1       184.72.0.0\/18      AMAZON\r\nus-east-1       184.72.64.0\/18     AMAZON\r\nus-east-1       184.72.128.0\/17    AMAZON\r\nus-east-1       184.73.0.0\/16      AMAZON\r\nus-west-1       184.169.128.0\/17   AMAZON\r\neu-west-1       185.48.120.0\/22    AMAZON\r\nap-southeast-1  203.83.220.0\/22    AMAZON\r\nus-west-1       204.236.128.0\/18   AMAZON\r\nus-east-1       204.236.192.0\/18   AMAZON\r\nus-west-1       204.246.160.0\/22   AMAZON\r\nGLOBAL          204.246.164.0\/22   AMAZON\r\nGLOBAL          204.246.168.0\/22   AMAZON\r\nGLOBAL          204.246.174.0\/23   AMAZON\r\nGLOBAL          204.246.176.0\/20   AMAZON\r\nGLOBAL          205.251.192.0\/19   AMAZON\r\nus-east-1       205.251.224.0\/22   AMAZON\r\nus-west-1       205.251.228.0\/22   AMAZON\r\nus-west-2       205.251.232.0\/22   AMAZON\r\nus-gov-west-1   205.251.236.0\/22   AMAZON\r\nus-east-1       205.251.240.0\/22   AMAZON\r\nus-east-1       205.251.244.0\/23   AMAZON\r\nus-east-1       205.251.247.0\/24   AMAZON\r\nus-east-1       205.251.248.0\/24   AMAZON\r\nGLOBAL          205.251.249.0\/24   AMAZON\r\nGLOBAL          205.251.250.0\/23   AMAZON\r\nGLOBAL          205.251.252.0\/23   AMAZON\r\nGLOBAL          205.251.254.0\/24   AMAZON\r\nus-east-1       205.251.255.0\/24   AMAZON\r\nus-east-1       207.171.160.0\/20   AMAZON\r\nus-east-1       207.171.176.0\/20   AMAZON\r\nGLOBAL          216.137.32.0\/19    AMAZON\r\nus-east-1       216.182.224.0\/20   AMAZON\r\nus-east-1       23.20.0.0\/14       EC2\r\neu-west-1       46.51.128.0\/18     EC2\r\neu-west-1       46.51.192.0\/20     EC2\r\nap-southeast-1  46.51.216.0\/21     EC2\r\nap-northeast-1  46.51.224.0\/19     EC2\r\neu-west-1       46.137.0.0\/17      EC2\r\neu-west-1       46.137.128.0\/18    EC2\r\nap-southeast-1  46.137.192.0\/19    EC2\r\nap-southeast-1  46.137.224.0\/19    EC2\r\nus-east-1       50.16.0.0\/15       EC2\r\nus-west-1       50.18.0.0\/16       EC2\r\nus-east-1       50.19.0.0\/16       EC2\r\nus-west-2       50.112.0.0\/16      EC2\r\nus-east-1       52.0.0.0\/15        EC2\r\nus-east-1       52.2.0.0\/15        EC2\r\nus-east-1       52.4.0.0\/14        EC2\r\nus-west-1       52.8.0.0\/16        EC2\r\nus-west-1       52.9.0.0\/16        EC2\r\nus-west-2       52.10.0.0\/15       EC2\r\nus-west-2       52.12.0.0\/15       EC2\r\neu-west-1       52.16.0.0\/15       EC2\r\neu-west-1       52.18.0.0\/15       EC2\r\nus-east-1       52.20.0.0\/14       EC2\r\nus-west-2       52.24.0.0\/14       EC2\r\neu-central-1    52.28.0.0\/16       EC2\r\neu-central-1    52.29.0.0\/16       EC2\r\neu-west-1       52.30.0.0\/15       EC2\r\nus-west-2       52.32.0.0\/14       EC2\r\nus-west-2       52.36.0.0\/14       EC2\r\nus-west-2       52.40.0.0\/14       EC2\r\neu-west-1       52.48.0.0\/14       EC2\r\nus-west-1       52.52.0.0\/15       EC2\r\neu-central-1    52.58.0.0\/15       EC2\r\nap-southeast-2  52.62.0.0\/15       EC2\r\nap-southeast-2  52.64.0.0\/17       EC2\r\nap-southeast-2  52.64.128.0\/17     EC2\r\nap-southeast-2  52.65.0.0\/16       EC2\r\nsa-east-1       52.67.0.0\/16       EC2\r\nap-northeast-1  52.68.0.0\/15       EC2\r\nus-east-1       52.70.0.0\/15       EC2\r\nus-east-1       52.72.0.0\/15       EC2\r\nap-southeast-1  52.74.0.0\/16       EC2\r\nap-southeast-1  52.76.0.0\/17       EC2\r\nap-southeast-1  52.76.128.0\/17     EC2\r\nap-southeast-1  52.77.0.0\/16       EC2\r\nap-northeast-2  52.79.0.0\/16       EC2\r\nus-east-1       52.86.0.0\/15       EC2\r\nus-west-2       52.88.0.0\/15       EC2\r\nus-east-1       52.90.0.0\/15       EC2\r\nsa-east-1       52.95.240.0\/24     EC2\r\nap-southeast-2  52.95.241.0\/24     EC2\r\nap-southeast-1  52.95.242.0\/24     EC2\r\nap-northeast-1  52.95.243.0\/24     EC2\r\neu-west-1       52.95.244.0\/24     EC2\r\nus-east-1       52.95.245.0\/24     EC2\r\nus-west-1       52.95.246.0\/24     EC2\r\nus-west-2       52.95.247.0\/24     EC2\r\neu-central-1    52.95.248.0\/24     EC2\r\ncn-north-1      52.95.249.0\/24     EC2\r\nap-northeast-2  52.95.252.0\/24     EC2\r\nsa-east-1       52.95.255.0\/28     EC2\r\nap-southeast-2  52.95.255.16\/28    EC2\r\nap-southeast-1  52.95.255.32\/28    EC2\r\nap-northeast-1  52.95.255.48\/28    EC2\r\neu-west-1       52.95.255.64\/28    EC2\r\nus-east-1       52.95.255.80\/28    EC2\r\nus-west-1       52.95.255.96\/28    EC2\r\nus-west-2       52.95.255.112\/28   EC2\r\neu-central-1    52.95.255.128\/28   EC2\r\ncn-north-1      52.95.255.144\/28   EC2\r\nap-northeast-1  52.192.0.0\/15      EC2\r\nap-northeast-1  52.196.0.0\/14      EC2\r\nus-east-1       52.200.0.0\/13      EC2\r\neu-west-1       52.208.0.0\/13      EC2\r\nap-southeast-1  52.220.0.0\/15      EC2\r\nap-northeast-1  54.64.0.0\/15       EC2\r\nap-southeast-2  54.66.0.0\/16       EC2\r\nus-west-1       54.67.0.0\/16       EC2\r\nus-west-2       54.68.0.0\/14       EC2\r\neu-west-1       54.72.0.0\/15       EC2\r\neu-west-1       54.74.0.0\/15       EC2\r\neu-west-1       54.76.0.0\/15       EC2\r\neu-west-1       54.78.0.0\/16       EC2\r\nap-southeast-2  54.79.0.0\/16       EC2\r\nus-east-1       54.80.0.0\/13       EC2\r\nus-east-1       54.88.0.0\/14       EC2\r\nap-northeast-1  54.92.0.0\/17       EC2\r\nus-east-1       54.92.128.0\/17     EC2\r\neu-central-1    54.93.0.0\/16       EC2\r\nsa-east-1       54.94.0.0\/16       EC2\r\nap-northeast-1  54.95.0.0\/16       EC2\r\nus-east-1       54.144.0.0\/14      EC2\r\nus-west-2       54.148.0.0\/15      EC2\r\nap-northeast-1  54.150.0.0\/16      EC2\r\nus-west-1       54.151.0.0\/17      EC2\r\nap-southeast-1  54.151.128.0\/17    EC2\r\nus-east-1       54.152.0.0\/16      EC2\r\nus-west-1       54.153.0.0\/17      EC2\r\nap-southeast-2  54.153.128.0\/17    EC2\r\neu-west-1       54.154.0.0\/16      EC2\r\neu-west-1       54.155.0.0\/16      EC2\r\nus-east-1       54.156.0.0\/14      EC2\r\nus-east-1       54.160.0.0\/13      EC2\r\nap-northeast-1  54.168.0.0\/16      EC2\r\nap-southeast-1  54.169.0.0\/16      EC2\r\neu-west-1       54.170.0.0\/15      EC2\r\nus-east-1       54.172.0.0\/15      EC2\r\nus-east-1       54.174.0.0\/15      EC2\r\nus-west-1       54.176.0.0\/15      EC2\r\nap-northeast-1  54.178.0.0\/16      EC2\r\nap-southeast-1  54.179.0.0\/16      EC2\r\nus-west-1       54.183.0.0\/16      EC2\r\nus-west-2       54.184.0.0\/13      EC2\r\nus-west-1       54.193.0.0\/16      EC2\r\neu-west-1       54.194.0.0\/15      EC2\r\nus-east-1       54.196.0.0\/15      EC2\r\nus-east-1       54.198.0.0\/16      EC2\r\nap-northeast-1  54.199.0.0\/16      EC2\r\nus-west-2       54.200.0.0\/15      EC2\r\nus-west-2       54.202.0.0\/15      EC2\r\nus-east-1       54.204.0.0\/15      EC2\r\nap-southeast-2  54.206.0.0\/16      EC2\r\nsa-east-1       54.207.0.0\/16      EC2\r\nus-east-1       54.208.0.0\/15      EC2\r\nus-east-1       54.210.0.0\/15      EC2\r\nus-west-2       54.212.0.0\/15      EC2\r\nus-west-2       54.214.0.0\/16      EC2\r\nus-west-1       54.215.0.0\/16      EC2\r\neu-west-1       54.216.0.0\/15      EC2\r\nus-west-2       54.218.0.0\/16      EC2\r\nus-west-1       54.219.0.0\/16      EC2\r\neu-west-1       54.220.0.0\/16      EC2\r\nus-east-1       54.221.0.0\/16      EC2\r\ncn-north-1      54.222.128.0\/17    EC2\r\ncn-north-1      54.223.0.0\/16      EC2\r\nus-east-1       54.224.0.0\/15      EC2\r\nus-east-1       54.226.0.0\/15      EC2\r\neu-west-1       54.228.0.0\/16      EC2\r\neu-west-1       54.229.0.0\/16      EC2\r\nsa-east-1       54.232.0.0\/16      EC2\r\nsa-east-1       54.233.0.0\/18      EC2\r\nsa-east-1       54.233.64.0\/18     EC2\r\nsa-east-1       54.233.128.0\/17    EC2\r\nus-east-1       54.234.0.0\/15      EC2\r\nus-east-1       54.236.0.0\/15      EC2\r\nap-northeast-1  54.238.0.0\/16      EC2\r\nus-west-1       54.241.0.0\/16      EC2\r\nus-east-1       54.242.0.0\/15      EC2\r\nus-west-2       54.244.0.0\/16      EC2\r\nus-west-2       54.245.0.0\/16      EC2\r\neu-west-1       54.246.0.0\/16      EC2\r\neu-west-1       54.247.0.0\/16      EC2\r\nap-northeast-1  54.248.0.0\/15      EC2\r\nap-northeast-1  54.250.0.0\/16      EC2\r\nap-southeast-1  54.251.0.0\/16      EC2\r\nap-southeast-2  54.252.0.0\/16      EC2\r\nap-southeast-2  54.253.0.0\/16      EC2\r\nap-southeast-1  54.254.0.0\/16      EC2\r\nap-southeast-1  54.255.0.0\/16      EC2\r\nus-east-1       67.202.0.0\/18      EC2\r\nus-east-1       72.44.32.0\/19      EC2\r\nus-east-1       75.101.128.0\/17    EC2\r\neu-west-1       79.125.0.0\/17      EC2\r\nus-gov-west-1   96.127.0.0\/17      EC2\r\nap-northeast-1  103.4.8.0\/21       EC2\r\nus-east-1       107.20.0.0\/14      EC2\r\nap-southeast-1  122.248.192.0\/18   EC2\r\nus-east-1       174.129.0.0\/16     EC2\r\nap-southeast-1  175.41.128.0\/18    EC2\r\nap-northeast-1  175.41.192.0\/18    EC2\r\nap-northeast-1  176.32.64.0\/19     EC2\r\nap-northeast-1  176.34.0.0\/19      EC2\r\nap-northeast-1  176.34.32.0\/19     EC2\r\neu-west-1       176.34.64.0\/18     EC2\r\neu-west-1       176.34.128.0\/17    EC2\r\nsa-east-1       177.71.128.0\/17    EC2\r\nus-west-1       184.72.0.0\/18      EC2\r\nus-east-1       184.72.64.0\/18     EC2\r\nus-east-1       184.72.128.0\/17    EC2\r\nus-east-1       184.73.0.0\/16      EC2\r\nus-west-1       184.169.128.0\/17   EC2\r\neu-west-1       185.48.120.0\/22    EC2\r\nus-west-1       204.236.128.0\/18   EC2\r\nus-east-1       204.236.192.0\/18   EC2\r\nus-east-1       216.182.224.0\/20   EC2\r\nGLOBAL          205.251.192.0\/21   ROUTE53\r\nus-west-1       54.183.255.128\/26  ROUTE53_HEALTHCHECKS\r\neu-west-1       54.228.16.0\/26     ROUTE53_HEALTHCHECKS\r\nsa-east-1       54.232.40.64\/26    ROUTE53_HEALTHCHECKS\r\nus-west-1       54.241.32.64\/26    ROUTE53_HEALTHCHECKS\r\nus-east-1       54.243.31.192\/26   ROUTE53_HEALTHCHECKS\r\nus-west-2       54.244.52.192\/26   ROUTE53_HEALTHCHECKS\r\nus-west-2       54.245.168.0\/26    ROUTE53_HEALTHCHECKS\r\nap-northeast-1  54.248.220.0\/26    ROUTE53_HEALTHCHECKS\r\nap-northeast-1  54.250.253.192\/26  ROUTE53_HEALTHCHECKS\r\nap-southeast-1  54.251.31.128\/26   ROUTE53_HEALTHCHECKS\r\nap-southeast-2  54.252.79.128\/26   ROUTE53_HEALTHCHECKS\r\nap-southeast-2  54.252.254.192\/26  ROUTE53_HEALTHCHECKS\r\nap-southeast-1  54.255.254.192\/26  ROUTE53_HEALTHCHECKS\r\nus-east-1       107.23.255.0\/26    ROUTE53_HEALTHCHECKS\r\neu-west-1       176.34.159.192\/26  ROUTE53_HEALTHCHECKS\r\nsa-east-1       177.71.207.128\/26  ROUTE53_HEALTHCHECKS\r\nGLOBAL          52.84.0.0\/15       CLOUDFRONT\r\nGLOBAL          54.182.0.0\/16      CLOUDFRONT\r\nGLOBAL          54.192.0.0\/16      CLOUDFRONT\r\nGLOBAL          54.230.0.0\/16      CLOUDFRONT\r\nGLOBAL          54.239.128.0\/18    CLOUDFRONT\r\nGLOBAL          54.239.192.0\/19    CLOUDFRONT\r\nGLOBAL          54.240.128.0\/18    CLOUDFRONT\r\nGLOBAL          204.246.164.0\/22   CLOUDFRONT\r\nGLOBAL          204.246.168.0\/22   CLOUDFRONT\r\nGLOBAL          204.246.174.0\/23   CLOUDFRONT\r\nGLOBAL          204.246.176.0\/20   CLOUDFRONT\r\nGLOBAL          205.251.192.0\/19   CLOUDFRONT\r\nGLOBAL          205.251.249.0\/24   CLOUDFRONT\r\nGLOBAL          205.251.250.0\/23   CLOUDFRONT\r\nGLOBAL          205.251.252.0\/23   CLOUDFRONT\r\nGLOBAL          205.251.254.0\/24   CLOUDFRONT\r\nGLOBAL          216.137.32.0\/19    CLOUDFRONT\r\n(env) \u279c  aws<\/pre>\n<h3>Filtering<\/h3>\n<pre class=\"lang:default decode:true \">(env) \u279c  aws python aws-ranges.py -r sa-east-1\r\nregion     ip_prefix          service\r\n---------  -----------------  --------------------\r\nsa-east-1  52.67.0.0\/16       AMAZON\r\nsa-east-1  52.92.39.0\/24      AMAZON\r\nsa-east-1  52.92.64.0\/22      AMAZON\r\nsa-east-1  52.92.72.0\/22      AMAZON\r\nsa-east-1  52.94.7.0\/24       AMAZON\r\nsa-east-1  52.95.240.0\/24     AMAZON\r\nsa-east-1  52.95.255.0\/28     AMAZON\r\nsa-east-1  54.94.0.0\/16       AMAZON\r\nsa-east-1  54.207.0.0\/16      AMAZON\r\nsa-east-1  54.231.253.0\/24    AMAZON\r\nsa-east-1  54.232.0.0\/16      AMAZON\r\nsa-east-1  54.233.0.0\/18      AMAZON\r\nsa-east-1  54.233.64.0\/18     AMAZON\r\nsa-east-1  54.233.128.0\/17    AMAZON\r\nsa-east-1  54.240.244.0\/22    AMAZON\r\nsa-east-1  177.71.128.0\/17    AMAZON\r\nsa-east-1  177.72.240.0\/21    AMAZON\r\nsa-east-1  52.67.0.0\/16       EC2\r\nsa-east-1  52.95.240.0\/24     EC2\r\nsa-east-1  52.95.255.0\/28     EC2\r\nsa-east-1  54.94.0.0\/16       EC2\r\nsa-east-1  54.207.0.0\/16      EC2\r\nsa-east-1  54.232.0.0\/16      EC2\r\nsa-east-1  54.233.0.0\/18      EC2\r\nsa-east-1  54.233.64.0\/18     EC2\r\nsa-east-1  54.233.128.0\/17    EC2\r\nsa-east-1  177.71.128.0\/17    EC2\r\nsa-east-1  54.232.40.64\/26    ROUTE53_HEALTHCHECKS\r\nsa-east-1  177.71.207.128\/26  ROUTE53_HEALTHCHECKS\r\n(env) \u279c  aws python aws-ranges.py -r sa-east-1 -s ec2\r\nregion     ip_prefix        service\r\n---------  ---------------  ---------\r\nsa-east-1  52.67.0.0\/16     EC2\r\nsa-east-1  52.95.240.0\/24   EC2\r\nsa-east-1  52.95.255.0\/28   EC2\r\nsa-east-1  54.94.0.0\/16     EC2\r\nsa-east-1  54.207.0.0\/16    EC2\r\nsa-east-1  54.232.0.0\/16    EC2\r\nsa-east-1  54.233.0.0\/18    EC2\r\nsa-east-1  54.233.64.0\/18   EC2\r\nsa-east-1  54.233.128.0\/17  EC2\r\nsa-east-1  177.71.128.0\/17  EC2\r\n(env) \u279c  aws<\/pre>\n<h3>The code<\/h3>\n<pre class=\"lang:default decode:true\">#!\/usr\/bin\/env python\r\n#March 8th 2016\r\n\r\n__author__ = 'Jason Riedel'\r\n__description__ = 'Grabs IP ranges from amazon'\r\n__version__ = '1.0'\r\n\r\nurl = 'https:\/\/ip-ranges.amazonaws.com\/ip-ranges.json'\r\n\r\nimport requests\r\nimport json\r\nimport argparse\r\nfrom tabulate import tabulate\r\n\r\nparser = argparse.ArgumentParser()\r\nparser.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\")\r\nparser.add_argument('-s', '--service', action=\"store\", dest=\"serviceFilter\", required=False, help=\"Service to filter\/return data for: AMAZON, CLOUDFRONT, EC2\")\r\nparser.add_argument('-rl', action=\"store_true\", dest=\"listRegions\", required=False, help=\"List known regions\")\r\nparser.add_argument('-sl', action=\"store_true\", dest=\"listService\", required=False, help=\"List known services\")\r\nargs = parser.parse_args()\r\n\r\n\r\ndef get_json(url):\r\n    try:\r\n        r = requests.get(url)\r\n        jdata = r.json()\r\n\r\n    except Exception, e:\r\n        print \"ERROR - %s failed:  %s\" % (url, e)\r\n\r\n    return jdata\r\n\r\ndef list_filter_json(jdata, filter_on):\r\n    filtered_data = []\r\n    for i in range(len(jdata['prefixes'])):\r\n        filtered_data.append(jdata['prefixes'][i][filter_on])\r\n    return filtered_data\r\n\r\ndef filter_json(jdata, filters):\r\n    filtered_data = []\r\n    for i in range(len(jdata['prefixes'])):\r\n        if 'region' in filters and 'service' in filters:\r\n            if filters['region'].lower() in jdata['prefixes'][i]['region'].lower() and filters['service'].lower() in jdata['prefixes'][i]['service'].lower():\r\n                filtered_data.append(jdata['prefixes'][i])\r\n        elif 'region' in filters:\r\n            if filters['region'].lower() in jdata['prefixes'][i]['region'].lower():\r\n                filtered_data.append(jdata['prefixes'][i])\r\n        elif 'service' in filters:\r\n            if filters['service'].lower() in jdata['prefixes'][i]['service'].lower():\r\n                filtered_data.append(jdata['prefixes'][i])\r\n    return filtered_data\r\n\r\ndef list_regions(jdata):\r\n    regions = set()\r\n    filtered_data = list_filter_json(jdata, 'region')\r\n    for region in filtered_data:\r\n        regions.add(region)\r\n    for region in sorted(regions):\r\n        print region\r\n\r\ndef list_services(jdata):\r\n    services = set()\r\n    filtered_data = list_filter_json(jdata, 'service')\r\n    for service in filtered_data:\r\n        services.add(service)\r\n    for service in sorted(services):\r\n        print service\r\n\r\ndef table_it(filtered_data):\r\n    print tabulate(filtered_data, headers=\"keys\")\r\n\r\nif __name__ == \"__main__\":\r\n    jdata = get_json(url)\r\n    if args.listRegions or args.listService:\r\n        if args.listRegions:\r\n            list_regions(jdata)\r\n        elif args.listService:\r\n            list_services(jdata)\r\n        else:\r\n            parser.print_help()\r\n    else:\r\n        if args.regionFilter or args.serviceFilter:\r\n            if args.regionFilter and args.serviceFilter:\r\n                filters = {'region': args.regionFilter, 'service': args.serviceFilter}\r\n            else:\r\n                if args.regionFilter:\r\n                    filters = {'region': args.regionFilter}\r\n                if args.serviceFilter:\r\n                    filters = {'service': args.serviceFilter}\r\n            filtered_data = filter_json(jdata, filters)\r\n            table_it(filtered_data)\r\n        else:\r\n            table_it(jdata['prefixes'])<\/pre>\n","protected":false},"excerpt":{"rendered":"<a href=\"https:\/\/tuxlabs.com\/?p=348\" rel=\"bookmark\" title=\"Permalink to Fun with Python, Tabular &#038; AWS IP ranges\"><p>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\u00a0AWS portion of the Hybrid Cloud Platform. Today I found myself continually needing to look up AWS public address space and then parsing out [&hellip;]<\/p>\n<\/a>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131,130,8,9],"tags":[134,23,132,129,55,133],"class_list":{"0":"post-348","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"category-cloud","8":"category-programming","9":"category-python","10":"tag-amazon-web-services","11":"tag-aws","12":"tag-cloud","13":"tag-json","14":"tag-python","15":"tag-tabular","16":"h-entry","17":"hentry"},"_links":{"self":[{"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348"}],"version-history":[{"count":6,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions\/355"}],"wp:attachment":[{"href":"https:\/\/tuxlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tuxlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}