Amazon Athena
S3 上のデータに対して標準 SQL でクエリを実行できるサーバーレス分析サービスで、インフラの管理なしにペタバイト規模のデータ分析を従量課金で実現する
概要
Amazon Athena は、S3 に保存されたデータに対して標準 SQL (Trino / Presto ベース) でクエリを実行できるサーバーレスのインタラクティブクエリサービスです。データベースやクラスターのプロビジョニングは不要で、S3 上のデータに対してスキーマを定義するだけでクエリを実行できます。CSV、JSON、Parquet、ORC、Avro など多様なデータ形式に対応し、Glue Data Catalog と統合してスキーマを管理します。料金はスキャンしたデータ量に基づく従量課金で、1TB あたり 5 USD です。Parquet や ORC などの列指向フォーマットを使用すれば、必要な列だけをスキャンするためコストを大幅に削減できます。
サーバーレス分析の仕組み
Athena はクエリを実行するたびに、必要なコンピューティングリソースを自動的にプロビジョニングし、クエリ完了後に解放します。Redshift のようにクラスターを常時稼働させる必要がないため、クエリを実行しない時間帯のコストはゼロです。クエリの実行エンジンは Trino (旧 Presto) をベースにしており、分散処理で大規模なデータセットを高速にスキャンします。Athena のパフォーマンスを最大化するには、データの保存形式が重要です。CSV や JSON は行指向フォーマットであり、特定の列だけを取得する場合でもファイル全体をスキャンする必要があります。Parquet や ORC は列指向フォーマットであり、必要な列だけを読み取るため、スキャン量が大幅に削減されます。さらに、データをパーティション分割 (年/月/日のディレクトリ構造) すれば、WHERE 句の条件に一致するパーティションだけをスキャンするため、コストとパフォーマンスの両方が改善されます。
CloudTrail ログと VPC フローログの分析
Athena の最も一般的な活用シーンは、AWS のログ分析です。CloudTrail のログを S3 に配信し、Athena でクエリすれば、特定のユーザーの API 呼び出し履歴、特定のリソースへのアクセスパターン、エラーが発生した API 呼び出しの一覧などを SQL で簡単に抽出できます。VPC フローログも同様に、S3 に配信して Athena で分析できます。特定の IP アドレスからの通信パターン、拒否されたトラフィックの一覧、データ転送量の多い通信先の特定などが可能です。ALB のアクセスログ、S3 のアクセスログ、CloudFront のアクセスログも Athena で分析できます。これらのログ分析では、Parquet 形式への変換とパーティション分割を事前に行うことで、クエリコストを 90% 以上削減できます。
実務での活用パターン
Athena は、データレイク上のアドホック分析に最適です。S3 をデータレイクとして、様々なソースからのデータ (アプリケーションログ、IoT データ、ビジネスデータ) を集約し、Athena で横断的に分析します。Glue の ETL ジョブでデータを Parquet 形式に変換し、Glue Data Catalog でスキーマを管理し、Athena でクエリする、というパイプラインが定番です。QuickSight と連携すれば、Athena のクエリ結果をダッシュボードとして可視化できます。Azure の対応サービスは Azure Synapse Analytics のサーバーレス SQL プールで、同様に Azure Blob Storage 上のデータに SQL でクエリを実行できます。Athena の基礎から応用まで、書籍 (Amazon)で体系的に学べます。