はじめに
AWS を触り始めたばかりの頃にやらかした初歩的なミスをまとめたアドベントカレンダー、題して「AWS初歩ミス図鑑」の 19 日目です。
今回は Athena の課金体系を理解せずに使い続けた話 を書いていきます。
やっていたこと
S3 に蓄積された ALB や WAF のログデータを分析する必要がありました。Athena の存在を知ったのはこの時が初めてです。
幸い、クエリ文自体は知っていたので「S3 においてあるデータがクエリで検索できるのか!すごいなあ」と、以下のようなクエリを連発していました。従量課金の悪夢の始まりです。
SELECT * FROM access_logs;
結果
当時、検証アカウントは使用料金が 100 ドルを超えるとアラートが鳴るように設定されていました。たいてい、毎月超えるかどうか微妙なラインで、RDS や EKS など高めのサービスの検証をしたときにちょっと超えちゃうかな…くらいの距離感でした。
しかしながら、私が Athena を使用し始めた月は早々にこのアラートが鳴ってしまい、原因が自分のやっている作業以外に思い当たらなかったので、即座に CostReport で利用料金の推移を確認してみました。案の定、Athena の利用料金がたいへんなことになっています。
何を考えていたのか
Athena が従量課金制ということを深く理解していませんでした。また、検索対象のデータはパーティションが作成されていたにも関わらず、そちらを使用していませんでした。
WAF のログデータでいうと以下の処理です。
まとめ
従量課金という言葉の恐ろしさが身に刻まれた一件でした。使えば使うだけお金がかかるというのは、たいへんにわかりやすい料金形態ではありますが、自分できちんと管理をしないととてつもない利用額になることがあります。
Athena を利用するときはデータベースとテーブルをしっかり指定した後、なるべくデータスキャン量がすくなくなるように工夫するのが良いです。
余談ですが、Athena でログ分析をする可能性が少しでもある場合は、あらかじめパーティション等を作成して検索がしやすいようにしておくのも手です。(特に WAF のログはあとからやろうとするとものすごく大変なので、事前に対策をしておくのが良いです…。)