我が名はなんとか菜である!

主に技術系の記事を書きますが、ポエムも混入します。

AWS の Cloud Watch でアッチッチになった件

日記です。先週みたいに文章量多いと続かないかなと思ったので今日は少なめ。

今日はらくスパ1010神田で銭湯に浸かったあと休憩室で牛乳を飲みながら書きます。

仕事が一段落するかと思ったら一段落しなかった。

モチベーションの低下が著しすぎて社内の相談ボックスみたいなやつに愚痴を投げ込んだら話を聞いてもらえることになった。まあ話して解決するようなもんでもないと思うけども・・・。

さてAWS

AWSはなんとなくやっておいたほうがいいだろうけど個人利用だとこんな大がかりな仕組みいらんなーと思ってLambdaとS3ぐらいしか触ってこなかったけど、今関わってるやつでようやく触る機会に恵まれた。

ぶっちゃけどこまで触ってもクソデカJenkinsとしか思えないが、まあこれだけで prod ready な環境が構築できるのはすごいっちゃすごいのかしらね。

何をやってるかというと、RDSとかAPI GatewayとかLambdaを Serverless framework を使って構築してウェブアプリをエイヤッするベーシックなやつ(だと思う)をやっている。

僕もつい最近までピンと来てなかったんだけど、AWSって基本的に「書き込み処理」には金がかかるがそれを読みだしたり保存しておく分には大してお金が掛からない。まあEC2とかは存在してるだけで掛かるけど。

で、先日ちょっとしたミスをやらかしてめっちゃお金が掛かっちゃいそうになった(ていうかちょっと掛かった)のでそのことを書いておく。

金が掛かったやつの名前は "Cloud Watch" である。

Cloud Watch ってのは何かっていうと、簡単にいうとログを収集したりサービスの稼働率の統計をいい感じにしてくれるやつである。

実は Cloud Watch は「ログの出力」に対してお金が掛かるらしい。

どういうことかというと、例えば node.js 製のアプリで console.log とか書くとその出力に対してお金が掛かる。

まあさすがに1つ1つに何ドルとかじゃなくて 公式の料金表 によると

範囲 コスト (メトリクス/月)
最初の 10,000 メトリクス 0.30USD
次の 240,000 メトリクス 0.10USD
次の 750,000 メトリクス 0.05USD
1,000,000 を超えるメトリクス 0.02USD

のような感じらしい。 まあ1万行で30円だからそんなめちゃくちゃ高いわけでもないだけど。

僕がやらかしたのは、 Lambda でめちゃくちゃ定期実行させるバッチ処理のコードの中で大量のログを吐き出すようにしてしまっていた ということである。あーらら。

1万行ぐらいなら30円で済ませてくれるAWS仏様でも、さすがに 一度に1000行ぐらい出力するバッチを5分間隔で24時間回したら般若の形相になる ということである。

幸い、詳しい人に早めに指摘されたのでそこまで痛手にならずには済んだ、とはいえ僕から見たら十分やっちまった感のあるお値段だったけど・・・。

言い訳をしておくと、そもそもなんでそんなにログを出すようにしてたかというと、デバッグの途中だったからなんですね。

統計処理をするようなバッチなので、データ量が揃ってないローカル環境で実行するのとは違って想定外の挙動とかをすることがあって、それを調べるためにログを多めに出していた。まあ、その状態のまま放置したのは何も言い訳のしようもないんだけど…。スイマセンデシタ…。

ログというのはそもそも後から実行結果を確認したりエラーが出た時の原因究明の手掛かりになるようにするものであって、多すぎても少なすぎても意味がないので、やっぱり結構深い分野なのかもな、ということを思った。

今度からAWSを使うときはドキュメントと併せて料金表もよく見ておこうと思いました、というお話でした。