はじめに
本記事は NSSOL Advent Calendar 2025 の 17 日目の記事です。
Amazon Athena。
「サーバレスで便利だし、クエリ書くだけで結果出るし、これ夜間バッチにも使えるのでは?」
そんな考えから、Athena を夜間バッチで ETL 処理をさせてみようと考えました。
夜間バッチの ETL 処理を簡単に構築できたらという思いで検討を進めていましたが…
Athena の名前はギリシャ神話の知恵と戦略の女神「アテナ」が由来。
「女神を夜勤に入れようとしていたのか…」
最終的に、女神に夜勤をさせるのは簡単なことではないと気づく結果となりました。
この記事では、Athena の料金を正しく理解し、アテナ様を働かせすぎないための知見をまとめます。
Athena とは?
Athena は「S3上のデータに対して SQL を直接実行できるサーバレスの分析基盤」です。
- サーバ管理不要
- Presto/Trino ベース
- Iceberg 等のテーブル形式にも対応
- 課金は “スキャンしたデータ量” ベース
簡単に始められ、料金体系も分かりやすいです。
しかし、使い方を間違えるとアテナ様の時給が跳ね上がります。
一般的な Athena 料金体系
通常の Athena は従量課金で、データスキャン量に比例した料金が請求されます。
料金単価は、
$5 / 1TBスキャン
です。
スキャンデータ量に依存するため、ファイル圧縮やパーティション設定によって、スキャン量を節約できます。
例えば、一日の処理対象として 1,024 GB ほどのデータがあり、スキャン量は 10%、つまり 102.4 GB だと仮定すると、
$5 × 102.4 / 1024 = $0.5
たった 0.5 ドルしかかかりません。
これだけ見ると、
「Athena って安くていいじゃん」
と思いがちですが、1 つ欠点があります。
サーバレスサービスなので、1 アカウント内で同時に実行できる処理数に制限があります。
東京リージョンでは 150 です。
しかも、必ず 150 処理まで同時実行できるわけではありません。
SQL の複雑度などによって自動的に使用されるコンピュートが割り当てられるので、各アカウントへのコンピュートリソース分割具合によって、勝手にキューに入れられてしまいます。
時間が限られた夜間処理としては、ユーザー側が処理並列度を制御できないのはなかなか致命的です。
そんなときに便利な機能が「キャパシティ予約」です。
キャパシティ予約の仕組みと料金体系
キャパシティ予約とは、使用するコンピュートリソースを DPU という単位で予約して、専有利用するというものです。
最大 1,000 DPU まで予約可能です。
DPU とは、Athena の計算能力の単位、データ処理ユニット(Data Processing Unit)のことです。
1 DPU = 4 vCPU, 16 GB メモリ
たとえば INSERT や MERGE などの DML クエリには、4〜124 DPU が自動で割り当てられます。
重い変換ほど DPU を多く使うことになります。
実際に処理を実行してみて、キューに入るようだったら予約する DPU 数を上げ、キューに入らないようだったら予約する DPU 数を小さくし、適切な予約量を見極める必要があります。
ちなみに補足ですが、最近キャパシティ予約をオートスケーリングできるようになったみたいです。
さて、キャパシティ予約の料金ですが、データスキャン量には関わらず、予約した時間と DPU 数に依存します。
1 DPU あたり $0.43 / 時間
大規模なデータ基盤の ETL 処理を実現するためには結構な DPU 割り当てが必要になるので、予約最大量の1,000 DPU で夜間 8 時間予約すると仮定してみましょう。
$0.43 × 1,000 × 8 = $3,440
日本円にして約 53 万円です。
一年間では、約 2 億円にもなります。
Athena の名前はギリシャ神話の女神アテナ。
知恵と戦略の象徴である彼女に、
- 毎日 8 時間
- 365 日
- 1,000 DPU
の全力稼働で深夜の ETL バッチ処理をお願いすると、ものすごい夜勤代がかかります。
おわりに
Athena は Amazon S3 に配置されたファイルを SQL で解析することのできる便利なサービスです。
最近は S3 Tables という Apache Iceberg をサポートしたマネージドなクラウドストレージストアも出てきましたし、より Athena が使われる機会が増えていくと思います。
普通に使う分には、裏で並列分散処理が自動的に実行されて性能はそこそこ良いし、コストはスキャン量に応じた従量課金で比較的安く、メリットが多く目立ちます。
ただし、リソースを専有的に使用したい、そんなときに便利なキャパシティ予約機能は、大規模に使おうとするとものすごいコストがかかってしまいます。
女神には夜勤はさせないで、バイト程度に仕事をしてもらうのがちょうど良い、というお話でした。