こんにちは、こじろうです。
世の中のシステム開発はどんどんクラウド化しているわけですが、これは他人のサーバやデータベースを借りているわけで、当然、時間単位で「課金」されていくわけです。
便利なサービスるである一方、気づかぬうちに数万円の請求書が届く…なんてこともあり得ます。
といった疑問を持つ方も多いと思います。
この記事では、メジャー・クラウドサービスの一つであるAWSを例に、サーバ料金をできるだけ消費しない利用方法をご紹介したいと思います。
【この記事でわかること】
- クラウドサービスの課金ルール
- 利用していないが、「利用可能」な状態だと課金されてしまう
- 利用していないときに、一気にシャットダウン
- この方法を利用した僕の現在
使ってないけど、「利用可能」だと費用を取られてしまう!
クラウドサービスの課金ルール
詳細は、Developpers.IOさんのこの記事が分かりやすく書かれているので、是非、こちらを参照ください。
2017年から、秒単位での利用料金請求が可能となりました。つまり、駐車場/駐輪場の利用料金のように「ひと月〇〇円」ではなく、純粋に利用した時間だけ料金請求される仕組みなのです。
使用していなくても、電源が入ってしまっていたら課金されてしまう。
純粋に利用した時間だけ=クラウド(ここではAWS)上で、サーバやデータベースのステータスが「Available」になっている状態を指します。
つまり、AWS上のサーバでプログラミング等の仕事をして、シャットダウンしないまま作業を止め、そのまま数日たつと、しっかり課金されてしまうのです。
AWS上のサーバやデータベース皆、”定時退社”させよう!
「だったら作業が終わるたびにちゃんと停止すればいいじゃん」という話なのですが、これがなかなか面倒且つうっかり忘れてしまうのです…
うっかり忘れたことにすぐ気がつければよいのですが、これが一週間・一か月くらい経ってしまうものなんですよね…そうなると、サーバの一時間当たりの利用料金をやく50円、一か月電源をつけっぱなしにしたとすると…
50(yen)×24(h)×30(days)=36,000yen
36,000円をドブに捨ててしまうことになります。また、これが複数台合ったとすると、費用は36,000×台数分の金額になってしまい、収支が一気に火の車となってしまうわけです。
そこで、「毎日きまった時間になったらサーバを全てシャットダウンするようなプログラムを自分で書いてしまおう!」と考え、用意したのが以下のプログラムになります。
AWSのサービス「Lambda」を利用して定時退社実現!
まずはLambdaを開く
[AWSのコンソール]ー[コンピューティング]の下にある”Lambda”をクリックー[関数の作成]ボタンをクリック
関数の作成画面にて、以下をコピペ
import boto3
# Enter the region your instances are in, e.g. ‘us-east-1’
region = ‘(対象のリージョンを記載する)’
# Enter your instances here: ex. [‘X-XXXXXXXX’, ‘X-XXXXXXXX’]
#本当はFor文で書きたいところだが、事情により直接書く
instances = [
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
‘(ここにシャットダウンしたいEC2インスタンスIDを記載する)’,
]
def lambda_handler(event, context):
ec2 = boto3.client(‘ec2’, region_name=region)
ec2.stop_instances(InstanceIds=instances)
#print ‘stopped your instances: ‘ + str(instances)
Cloud Watchで上記のプログラムを決まった時間に実行するように設定
こちら(※作成中)の記事で詳細については触れておりますので、是非、ご覧ください。
これを利用した僕の現在
つい先日、クラウドを利用して提供したシステム開発が終わり、クライアント側に使ってもらうための引継ぎをしていく中で「クラウドの利用料金が高すぎて、このままでは利用しないかもしれない。せっかく作ってもらったけれど…」という相談を受けました。
これを受けて、上記の対応を実施したのですが、こういった「実運用前にクラウド料金が高いことが問題となる」ケースはほかでもチラチラ聞きます。
地味な対応ですが、収支に直結するサービスを提供でき、クライアント側にもインパクトを与えられた作業でした。
それでは、Chao◎
こじろう