-
-
Save matschaffer/4912279e49dce41ab9b2 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env bash | |
| URL="http://a0.awsstatic.com/pricing/1/ec2/ri-v2/linux-unix-shared.min.js" | |
| (echo 'function callback(data) { console.log(JSON.stringify(data)); }'; curl -s "$URL") |\ | |
| node |\ | |
| jq -r '.config.regions[] | | |
| select(.region == "us-east-1") | | |
| .instanceTypes[] | | |
| [ | |
| .type, | |
| ( .terms[] | select(.term == "yrTerm1") | .onDemandHourly[].prices.USD ), | |
| ( | |
| .terms[] | select(.term == "yrTerm1") | .purchaseOptions | | |
| map(.valueColumns[] | select(.name == "effectiveHourly") | .prices.USD)[] | |
| ), | |
| ( | |
| .terms[] | select(.term == "yrTerm3") | .purchaseOptions | | |
| map(.valueColumns[] | select(.name == "effectiveHourly") | .prices.USD)[] | |
| ) | |
| ] | | |
| join("\t") | |
| ' |
See my updated version:
https://gist.github.com/abcarroll/86850dc3cb4d449719888ba6a213b051
- Fixes where amazon changed json node keys to to "yrTerm1Standard" .. etc and broke it entirely
- Also fixes the nano alignment issue
Note to anyone interested, these files are available for all AWS services that I can find.... But not all easily compatible/using the same node tree.
Just go to the AWS pricing page of your choice and view source, and find "data-model". You will find one file for every single PricingTable/Tab combo. For example MySQL standard deployments (single AZ) is:
http://a0.awsstatic.com/pricing/1/rds/mysql/pricing-standard-deployments.min.js
One small possible positive note -- it seems the URL/filenames themselves do follow a bit of a pattern. So it should be easy to generate them. If you had time and a little more powerful of a programming language, you could do great things.
This is great, but when listing the t2.nano, the columns aren't aligned. I'd fix it, but I'm not node.js experienced. :-(