AWS EC2 と RDS のオンデマンド料金行を console.log に吐き出すスクリプト


何に使うの?

Reserved の Blended rate で計算されてしまった料金をオンデマンドレートに計算し直す際に使うためだよ。

なんでそんなことするの?

リザーブドを買っていない案件がリザーブドの恩恵を最も享受してしまって、リザーブドを買った案件のPMさんとかが怖い顔をするからだよ。

子アカウントの総額だけなら必要ないんだけど、エンドユーザに提出する明細が無駄に子細に書かれているためだよ。

なんでわざわざ Javascript で書いたの?

Excel から実行するためだよ。
あと Pricing API の JSON が扱いにくいからだよ。
あと公式から情報を拾いたいからだよ。

どうやって使うの?

EC2料金: https://aws.amazon.com/jp/ec2/pricing/on-demand/
とか
RDS料金: https://aws.amazon.com/jp/rds/pricing/
を開いて

下記のスクリプトを開発者ツールのコンソールに貼り付けて実行するだけだよ。

(function() {

var trClass = '.sizes';
if(String(location).match(/rds/i)){ var trClass = '.tiers'; }    

var idList = [];
var idTabs = $('.tabs.tab-default .a-tabs:eq(0) li a').each(function(){ 
  idList.push(String(this.href).replace(/^https?.*\#/,'') + ', ' + this.textContent)
});

for( var i=0, l=idList.length; i<l; i++) {
  var osArr = String(idList[i]).split(', ');
  $('#' + osArr[0] + ' .pricing-table.section:eq(0) .puretmpl .content').each(function(){
    var t = $(this);
    var reg = String(t.prop('class')).replace(/content reg\-/,'');
    var list = t.find(trClass)
    console.log(osArr[1] + " : " + reg);
    console.log('-=-=-=-=-=-');
    console.log(list);
    console.log('-=-=-=-=-=-');
    console.log('');
  });
}
})();

console で出力しているところを適宜変更すればいいと思うよ。

上記のページで async で読み込まれる json を拾うという方法もあるよ。

※ただ、そのURLを集めるのが億劫だったので、私はsetTimeoutで間を置いてからスクリプトが実行される様にしました。タイミングによっては要素を拾い損ねるので、拾った要素を確認して undefined の場合は再帰する様にしました。収集した要素は一つのtableにしてからExcelのgetElementでシートに落とし込みます。

実行結果イメージ

なんでかなしいかおをしているの?

多くのエンジニアが事務作業とかに忙殺されているからだよ。

※ 半分くらい冗談です。苦笑いでも笑っていただけると幸いです。