Athenaは、Amazon Web Services(以下、AWS)が提供するクエリサービスです。データストアに保存されたデータを、標準SQL(Structured Query Language)を使って分析することができます。
Amazon Athena(以下、Athena)は、Amazon S3(以下、S3)に保存されたデータを対象としていますが、外部のデータソースにも対応しています。Athenaはサーバーレスであり、クエリ実行後には自動的に停止されます。また、安全性に優れており、アクセス制御やデータの暗号化などの機能が提供されています。
Athenaのメリット
Athenaの最大のメリットは、「低コストで」「安全に」「素早く」S3などの外部データソースの情報を検索できることにあります。
S3のデータを検索できる
S3に保存されているファイルの中身に対して、検索機能を付与することができます。S3へ保存するデータの形式は、csvやtsv、jsonなど様々なものに対応しています。
S3へは、様々なファイルを保管することができますが、ファイル内のデータを活用しようとすると結構な手間がかかります。
たとえば、日ごとに売上データが作成され、1つのファイルとして保存される場合を考えています。データの集計をしたい場合、全てのファイルをダウンロードして、Excel等へマージさせて集計作業を行う必要があります。1ファイルであればよいですが、数十、数百ファイルとなるとかなり大変です。Athenaを使うことで、ダウンロード当の手間がなく、売上データの取得や集計が可能になります。
標準SQLが使えるので学習コストが低い
データの検索には、標準SQLが利用可能です。単一テーブルの検索はもちろん、複数テーブルの結合や集計なども可能です。
開発者や多くのエンジニアにとってSQLは身近なスキルとなっています。そのSQLを使って検索できるため、独自の言語を学習するためのコストがかかりません。
サーバレスなので利用コストが低く素早く利用が可能
Athenaはサーバレスなアーキテクチャを採用しています。利用するために、サーバーや構成の管理の手間が不要で、手軽に利用できます。
サーバレスなため、使った分だけの完全従量課金となっています。
AWS共通のセキュリティ基準なので安全
Athenaには、データの暗号化やアクセス制御などの機能が提供されており、安全に利用することが可能です。
Athenaを使ってできること
データ分析
Athenaでは標準SQLを使って、S3に保存されたデータを分析することができます。フィルタリングや集計などをSQLにて手軽に行うことができるので、S3へ保存されたビジネスデータから有用な情報を抽出し洞察を得ることができます。
データのETL(Extract, Transform, Load)処理
Athenaを使うことで、データを抽出して加工し、S3に格納するETL(Extract, Transform, Load)処理を実行することができます。
ログ分析
S3に保存されたアプリケーションやインフラストラクチャのログデータを分析することができます。CloudFrontやALBのアクセスログはS3へ保存されます。ログファイルは細切れに保存され、相当なファイル数になります。そのため、ログの解析が必要な場合にダウンロードして従来のように解析するのが難しくなります。Athenaを利用することで、アクセスログなど定型的な出力形式のログの分析が可能になるため、システムのトラブルシューティングやパフォーマンスの最適化などのタスクを実行することができます。
他のサービスとの連携
Athenaは他のAWSサービスとも連携することができます。
データソースとしては、S3と連携することで、バケット内に保存されたデータを直接分析が可能です。Amazon RedShiftと連携させて、クラスタ上のデータの分析もできます。Amazon EMRで処理されたデータを対象にすることも可能です。
ETL処理では、Amazon Glueと連携させることで、より高度なETL処理を実行することができます。
分析結果をAmazon QuickSightと連携させることで、グラフィカルに分析結果を表現することが可能です。
Athenaのメリット
Athenaは、データのクエリ実行量に応じて課金されます。一般的に、Athenaでは以下のような課金要素があります。
- データ読み取り
クエリを実行するたびにS3上のデータが読み取られます。この読み取り料金はデータのサイズに応じて異なります。
- ストレージ
クエリ結果などの中間データがS3上に保存されます。このストレージ料金はデータのサイズや保存期間に応じて異なります。
- クエリ実行数
クエリを実行するたびに課金されます。この課金額はクエリの実行時間や実行回数に応じて異なります。
また、無料枠も提供されており、その枠を超過した分が課金対象となります。
Athenaの使い方
Athenaの使い方について説明していきます。
- 1.データの用意
S3に解析したいデータを保存します。データはcsvやtsv、jsonなど様々な書式が対応していますが、一つに統一されている必要があります。ファイルは特定のフォルダに保存する必要があり、1ファイルでも複数ファイルでも構いません。
- 2.テーブルの定義
データの保存が完了したら、S3の特定フォルダを一つのテーブルに見たててSQLを実行することになります。そのために、Athenaからテーブルの定義を行います。
- 3.クエリを投げる
テーブルの定義が完了したら、標準SQLでクエリが可能です。クエリを実行すると、S3上のデータをスキャンして分析結果を生成します。
- 4.分析結果を確認する
分析結果はAthenaのコンソールに表示されます。必要な確認を行いましょう。また、分析結果はCSV形式等でダウンロードも可能です。
Athenaを利用する上での注意点
最後にAthenaを利用するうえでの注意点をまとめておきます。
- データフォーマット
データをS3上に保存する必要があります。AthenaでサポートされているデータフォーマットはCSV、JSON、ORC、Parquetなどです。これら以外のフォーマットはサポートされていない場合がありますので、注意が必要です。
- クエリパフォーマンス
Athenaは分散型のシステムではありません。このため、大量のデータや複雑なクエリを実行する場合、クエリパフォーマンスに問題が生じる場合があります。このため、Athenaを使う上ではクエリの最適化などにも注意が必要です。
- セキュリティ
S3上のデータにアクセスするためにIAMユーザーを使用します。このため、Athenaを使う上ではIAMユーザーのアクセス権限や認証情報なども注意する必要があります。
- データの一貫性
S3上のデータを参照するため、データの一貫性にも注意が必要です。このため、Athenaを使う上ではデータのバックアップや復旧なども注意する必要があります。
まとめ
Athenaを使うことで、S3に保存されているデータを標準SQLを使って分析することが可能になります。既存のSQLの知識が利用できるため学習コストが低く、サーバレスなので利用コストも抑えることが出来ます。QuickSightなどのBIツールと連携することで、分析結果をビジュアル化することも可能です。
ログデータを情報として取得できるサービスなので、ぜひトライしてみましょう。
また、AWS全体について気になる方は「AWSとは?初心者の人にもわかりやすく解説」もご覧ください。