LoginSignup
2
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-04-15

何に使うの?

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でシートに落とし込みます。

実行結果イメージ

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

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

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1