@ar1さんが 「EC2およびS3の価格をプログラマブルで計算したい人はJSONをたたこう」という記事を
公開されています。

JSONとくれば「jq」ということで、今回「jq」で色々と整形してみました。

まずはリージョン一覧です。

# curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json 
> | jq ' .config.regions[].region '
"us-east"
"us-west-2"
"us-west"
"eu-ireland"
"apac-sin"
"apac-tokyo"
"apac-syd"
"sa-east-1"

次にインスタンスタイプです。

# curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json 
> | jq ' .config.regions[] | select(.region == "sa-east-1").instanceTypes[].type '
"stdODI"
"secgenstdODI"
"uODI"
"hiMemODI"
"hiCPUODI"

インスタンスタイプといっても、”m1, m2, m3, c1, …”の部分が出力されています。

さらに、”small, large, …”の部分まで出力してみます。

# curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json 
> | jq ' .config.regions[] | select(.region == "apac-tokyo").instanceTypes[] | { (.type): [ .sizes[].size ] }'
{
"stdODI": [
"sm",
"med",
"lg",
"xl"
]
}
{
"secgenstdODI": [
"xl",
"xxl"
]
}
{
"uODI": [
"u"
]
}
{
"hiMemODI": [
"xl",
"xxl",
"xxxxl"
]
}
{
"hiCPUODI": [
"med",
"xl"
]
}

“u”がマイクロを指すようです(初見で分かりませんでした)。

最後にLinuxの金額まで出力してみます。

# curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json 
> | jq ' .config.regions[] | select(.region == "apac-tokyo").instanceTypes[] | { (.type): [ .sizes[] | { (.size): .valueColumns[] | select(.name == "linux").prices.USD } ] } '
{
"stdODI": [
{
"sm": "0.088"
},
{
"med": "0.175"
},
{
"lg": "0.350"
},
{
"xl": "0.700"
}
]
}
{
"secgenstdODI": [
{
"xl": "0.760"
},
{
"xxl": "1.520"
}
]
}
{
"uODI": [
{
"u": "0.027"
}
]
}
{
"hiMemODI": [
{
"xl": "0.505"
},
{
"xxl": "1.010"
},
{
"xxxxl": "2.020"
}
]
}
{
"hiCPUODI": [
{
"med": "0.185"
},
{
"xl": "0.740"
}
]
}

「24時間 x 30日 x 100円(1$)」して一ヶ月分の金額にもしてみました。

# curl -s http://aws.amazon.com/jp/ec2/pricing/pricing-on-demand-instances.json | jq ' .config.regions[] | select(.region == "apac-tokyo").instanceTypes[] | { (.type): [ .sizes[] | { (.size): .valueColumns[] | select(.name == "linux").prices.USD | ( tonumber * 24 * 30 * 100 ) } ] } '
{
"stdODI": [
{
"sm": 6336
},
{
"med": 12599.999999999996
},
{
"lg": 25199.999999999993
},
{
"xl": 50399.999999999985
}
]
}
{
"secgenstdODI": [
{
"xl": 54720.00000000001
},
{
"xxl": 109440.00000000001
}
]
}
{
"uODI": [
{
"u": 1944.0000000000002
}
]
}
{
"hiMemODI": [
{
"xl": 36360
},
{
"xxl": 72720
},
{
"xxxxl": 145440
}
]
}
{
"hiCPUODI": [
{
"med": 13319.999999999998
},
{
"xl": 53279.99999999999
}
]
}

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら