• ホーム
  • dx
  • サーバーレスで始める高速データ分析!Amazon Athenaの基本と活用術
dxdx

サーバーレスで始める高速データ分析!Amazon Athenaの基本と活用術

サーバーレスで始める高速データ分析!Amazon Athenaの基本と活用術
ビッグデータ活用を低コストかつ高速に実現するAmazon Athena。S3からの直接分析、Glueとの連携、セキュリティ管理、クエリ最適化技術まで、本記事では、システム・アプリ開発を行っているGMOデザインワンDX事業本部の事業責任者・泉川学監修のもと、Athenaの導入ステップや実務での活用ノウハウを徹底解説します。RedshiftやEMRとの違いもわかる決定版。これからAthenaを使いたいすべてのエンジニア必見です!

目次

1. Amazon Athenaとは

「データの分析をもっと手軽にしたい」と思ったことはありませんか?

Amazon Athena(アマゾン アシーナ)は、そんな要望に応える、クラウド上のサーバーレスなデータ分析サービスです。

特に、日々蓄積されるログや業務データを、わざわざ専用のデータベースへ移すことなく、直接クラウドストレージ上からSQL(エスキューエル:データベースなどを操作するための言語)を使って検索・分析できます。

これにより、多くの手間や構築コストを省いて、スピーディにインサイト(課題発見や気づき)を得ることが可能になります。

1-1 サーバーレスであるAthenaの基本構造

Amazon Athenaの最大の特徴は「サーバーレス」という点です。

これはつまり、自分たちでサーバー(情報処理をするための専用機器やその設定)を用意・管理しなくても、そのままクエリ(データを検索する命令)を実行できるということです。

具体的には、AthenaはAmazonのS3(スリー、クラウド上にデータを保管するサービス)というストレージに保存されたファイルに対して、直接SQL文を投げかけてデータを取得・分析します。

従来の場合、RedshiftやEMRなどの分析基盤を使うと、事前にクラスター構成やインスタンスの選定、管理が必要でした。

Athenaならそれら不要。クエリ処理にはAWS内部であらかじめ準備されたリソースが使われるため、インフラ構築の技術的ハードルがぐっと下がり、分析処理までの時間短縮が実現できます。

1-2 他のAWSサービスとの違いと連携

Amazon Athenaは多くのAWSサービスの中でも「特に手軽さと速さ」を重視した、独自のポジションを持つ分析ツールです。

例えば同じようにS3のデータを扱えるRedshift Spectrum(Redshiftのサブ機能)は強力ですが、Redshiftのクラスタ管理が必要です。EMR(Elastic MapReduce)はHadoopなどのビッグデータ処理を可能にしますが、初期構成やチューニングに深い知識が求められます。

一方Athenaは「S3にデータを置いておけば分析できる」しくみのため、QuickSight(クイックサイト:BIツール)やGlue(グルー:メタデータ管理やETL処理を行う)などと簡単に連携が可能です。

またAthenaの内部ではPresto(プレスト)という高速並列処理エンジンが使われており、高速な集計処理ができるというのも他サービスにはない魅力でしょう。

2. Amazon Athenaの主な特徴

Amazon Athenaが多くのエンジニアやデータ分析担当者に支持される理由は、「初期準備を最小限に抑えつつ、柔軟で高速なクエリ処理が可能」という点にあります。

また、従来の分析基盤に比べて、運用コストが非常に低く、特に一時的な分析(アドホック分析)に向いています。

ここではAthenaの主要な特長である「SQLの活用」「コスト最適化」「クエリ性能」について具体的に紹介します。

2-1 SQLで直接S3データをクエリ可能

Athenaでは、Amazon S3に保存されたファイル(例えばCSV形式やJSON、Parquetなど)に対して、直接SQLを用いてデータを選んだり絞りこむクエリが実行できます。

つまり、RDB(リレーショナルデータベース)にデータを移す手間も不要で、「ファイルを置くだけ」で即座に分析可能です。

例えば、業務システムから定期的に出力される売上データやアクセスログをS3に蓄積し、それを月次・週次でクエリするだけで、BIツールを用いずに一定レベルのレポーティングが可能となります。

Athenaが内部で使用しているPrestoエンジンは、大量のデータを分散処理(複数のサーバーで同時に処理)することで、待ち時間を短縮し効率的な分析を実現しています。

2-2 課金体系(従量課金)とコスト最適化

Athenaの利用コストは非常にシンプルです。

「スキャンしたデータ量(解析したファイルのサイズ)」に応じて課金される“従量課金制”が採用されています。

つまり、処理実行に使われた時間や回数ではなく、「クエリが対象とするデータの容量」に比例してコストが決まるのです。

よって、データファイルが軽ければ軽いほど費用も少なく済みます。

さらに、データ圧縮(例:SnappyやGzipなどを使用)、Parquet形式(列形式のデータ保存方法)などの活用、また「パーティション分割」(クエリの範囲を階層的に絞ってファイルサイズを抑える設計手法)を行うことで、無駄なコストを削減することができます。

コストを可視化するにはCloudWatchやAthena Workgroup(後述)のモニタリング機能も有効です。

2-3 高速なクエリ処理

Athenaのもう一つの大きなメリットは、SQLを発行してから結果が返るまでの「クエリ応答速度」が非常に速いことです。

これは、Athenaが分散型エンジンであるPrestoをベースにしているからです。

PrestoはOpen Sourceの並列処理エンジンで、大量のファイルやフォーマットに対応しながらも、集計・分析までを数秒〜十数秒で完了できる処理性能を誇ります。

特に、大量のログや売上データを高速に分析したいユースケースでは、必要な情報を素早く抽出できるという点で非常に有効です。

また、Athenaのクエリ結果は、自動で指定のS3バケットにCSVファイルとして保存されます。

この結果を再利用することで、レポートやダッシュボードとしての活用にもつなげられます。

3. 使用前に知っておきたい前提知識

Athenaは非常に使いやすい分析基盤ですが、最大限に活用するには、いくつか覚えておきたい基礎知識があります。

フォーマットの違いや、データの設計方法、Athenaが動作するために関連するAWSサービスへの理解が、そのまま運用効率と成果に結びつくためです。

ここでは、Athena導入前に押さえておくべき重要なポイントを3つご紹介します。

3-1 対応フォーマットと最適な設計

Athenaはさまざまなデータ形式に対応していますが、形式によってクエリ効率やコストに影響します。

代表的な対応フォーマットとしては以下があります。

- CSV(Comma Separated Values):一般的な表形式のファイル

- JSON(JavaScript Object Notation):構造データ向き

- Parquet:列ベース形式で、圧縮や高速処理に優れる

- ORC(Optimized Row Columnar):Parquetと同様に列形式で、高圧縮・高速読み込みが可能

Athenaで最も効果的に使える形式はParquetやORCといった列型フォーマットです。

これらは必要な列だけを読み込むためクエリが軽く、従量課金のコスト削減にも直結します。

CSVやJSONもサポートされていますが、非効率になる場合があり、できるだけ変換することが推奨されます。

3-2 パーティション分割の重要性

Athenaでのクエリ効率とコストの最適化において、「パーティショニング(区切り設計)」は非常に重要なテクニックです。

簡単にいえば、「ファイルを日付、店舗、地域などの条件でフォルダ分けしておく」ということです。

例えば、アクセスログを「/year=2024/month=06/day=01/」のように保存しておけば、「2024年6月の日次ログだけを分析」といったクエリを実行したときでも、最小限のデータだけを対象にできます。

これにより、スキャン量が減り、コストはもちろん処理時間も削減できます。

AWS Glueとの連携により、パーティションは自動で取り込むことも可能です(次で詳述します)。

3-3 必要なAWSリソース(IAM、S3、Glueなど)

Athenaを正しく使うためには、周辺のAWSサービスと最低限の知識が必要です。以下は主な例です。

- S3:分析対象となるデータを保存します。

- IAM(Identity and Access Management):AthenaやS3へアクセスするための権限管理を行います。

- AWS Glue:カタログとして、Athenaがどのようなデータ構造を扱うかの定義を行います(メタデータ管理)。また、Crawler機能で自動的にS3上のデータ構造を読み取り、テーブル作成が可能です。

このように、Athena単体で完結するわけではなく、関連リソースと連携した設計が必要です。

4. Amazon Athenaのセットアップ方法

Amazon Athenaを使って効果的なデータ分析を始めるには、いくつかの初期設定が必要です。

このセクションでは、データの準備からテーブル作成、Athenaの使用方法までの流れを、初めての方にもわかるようにステップごとに解説していきます。

特にS3やGlueとの連携が肝となるため、それぞれの役割も踏まえて説明します。

4-1 S3にデータを準備する手順

Athenaでデータを扱うには、まず分析対象となるファイルをAmazon S3にアップロードする必要があります。

手順は次の通りです:

1. AWSマネジメントコンソールにログイン

2. S3サービスを選択

3. データ保存用のバケット(フォルダのようなもの)を作成

4. ローカルPCからCSV、JSON、Parquetなどの形式でファイルをアップロード

5. フォルダ構成を、年/月/日やカテゴリ別などで階層的に整理

この構造をあらかじめ設計しておけば、後ほど説明する「パーティション化」もスムーズになります。

ファイル量が多い場合は、CLI(コマンドライン操作)やAWS SDKを使ってバッチ処理することも可能です。

4-2 テーブル定義/メタデータの作成(Glue Crawlerの利用)

Athenaでクエリを実行するには、対象データに対する「テーブル定義(メタデータ)」が必要となります。

これを手動で記述することもできますが、AWS Glue Crawlerを使えば、自動生成が可能です。

Glue Crawlerは、次の手順で使います:

1. Glueコンソールにアクセス

2. 「Crawler(クロウラー)」を作成

3. データの保存場所(S3パス)を指定

4. 出力先のデータベース(Glue Data Catalog)を設定

5. スケジュールを「オンデマンド(必要なときだけ実行)」に設定

6. Crawlerを実行して、Auto Schema Detection(自動スキーマ検出)を実行

これにより、Athenaで直接利用可能なテーブルが自動生成されます。データの型(文字列、数値、日付など)も自動判定されるため、手間が省けます。

4-3 Athenaコンソールの基本操作手順

続いて、Athenaのクエリエディタを使った基本的な操作を確認します:

1. AWSコンソールでAthenaを開く

2. 「クエリエディタ」を選択

3. 左側のナビゲーションで対象データベース → テーブルを選択

4. クエリボックスにSQL文を書いて「実行」ボタンをクリック

5. 結果がテーブル形式で表示。S3にもCSV形式で保存される

Athenaで行ったすべてのクエリはCloudWatch Logsに記録されるので、ログ管理やモニタリングも可能です。

Workgroup(分析チーム単位の実行管理機能)を利用すれば、クエリ単位のコスト可視化やガバナンス管理も実現できます。

5. 実行例:クエリサンプルと使い方

Athenaの魅力は、その柔軟なSQL処理にあります。

このセクションでは、実務で活用できるクエリ例を3パターン紹介し、分析ニーズに応じた使い方のアイデアを提案します。

5-1 基本的なSELECTクエリ

まずは最も基本的なSELECT文の例です:

SELECT *

FROM sales_data

WHERE year = '2024' AND region = 'Tokyo'

LIMIT 100;

この例では、2024年に東京エリアで発生した売上データを100件まで表示しています。

データ量が大きくない場合には、全件取得(SELECT *)でも容易に結果が得られますが、大規模データでは必要な列だけに限定すると高速化につながります。

5-2 JOIN句や関数の活用

Athenaでは標準的なSQL関数やJOIN句(テーブル同士を結合)も使えます。

SELECT a.user_id, a.action, b.user_name

FROM log_data a

JOIN user_master b ON a.user_id = b.user_id

WHERE a.action = 'login';

このように、アクセスログとマスタ情報をつなぐことで、「どのユーザーがログインしたか」といった詳細確認が可能になります。

関数も利用でき、DATE_FORMAT()やREGEXP_REPLACE()などの処理も含めた分析が行えます。

5-3 集計・分析クエリの実践例

集計処理を行えば、月別の売上合計やカテゴリごとの件数も簡単に抽出できます。

SELECT category, COUNT(*) AS total, AVG(price) AS avg_price

FROM sales_data

GROUP BY category

ORDER BY total DESC;

このように、カテゴリごとに購入件数と平均単価を出すことで、どのカテゴリが売上を牽引しているのか可視化できます。

分析用途によっては、BIツール連携やマテリアライズドビュー(保存されたSQL結果)を組み合わせることで、即応性の高い分析も可能になります。

6. Amazon Athenaと他サービスとの連携

Athena単体でも十分に実用的ですが、他のAWS関連サービスと組み合わせれば、さらに高度なデータ活用が可能となります。

ここでは、視覚化、データ変換、監視という3つの観点から、Athenaとの連携方法を紹介します。

6-1 Amazon QuickSightとの連携で可視化

QuickSightは、AWSが提供しているBI(ビジネスインテリジェンス)ツールで、Athenaのクエリ結果をリアルタイムでダッシュボード化できます。

設定の流れは以下のとおりです:

1. QuickSightにログイン

2. データソースとしてAthenaを選択

3. 使用するデータベースとテーブルを指定

4. 分析でグラフやチャートを作成

これにより、クエリで得られた数値を棒グラフや折れ線で視覚的に表示でき、経営層や非技術者へのレポート提出にも直結します。

6-2 AWS Glueとの連携でETL対応

Glueは「データ整形(ETL:Extract, Transform, Load)」を担うサービスで、大量の生データを目的に応じて変換・整理できます。

Parquet形式への変換や、不要な列の削除、条件によるフィルタリングなど、Athenaが後段で扱いやすくなる処理を事前に施す役割を担います。

例えば、ログファイルのタイムスタンプを統一形式にそろえたり、柔軟なスキーマ構造を整理する場合にGlueジョブがおすすめです。

6-3 CloudWatchでのログ監視との統合

Athenaの実行履歴やクエリエラーは自動的にCloudWatch Logsへ送信できます。

これにより、次のようなことが可能です:

- どのクエリにエラーが多いか確認

- クエリ処理時間の遅延を特定

- 不要なクエリ処理のコストチェック

また、CloudWatchアラームを設定すれば、特定条件に該当した場合にメール通知やLambda(サーバーレス関数)実行も可能となります。

7. セキュリティとアクセス管理

Amazon Athenaはクラウド上でデータを直接扱うサービスであるため、高度なセキュリティとアクセス権限の管理が必要不可欠です。

特に顧客データや機密情報を取り扱うケースでは、安全性を確保しつつ柔軟にアクセス権限を設定できる体制が求められます。

ここでは、Athenaのセキュリティ運用における3つの視点からポイントを解説します。

7-1 IAMポリシーによる細かなアクセス制御

Athenaを構成する上で最も基本的なセキュリティ設定が、IAM(Identity and Access Management)によるアクセス管理です。

IAMを使えば、「誰が、どのデータに、どのような操作ができるか」をきめ細かく制御できます。

例えば「Athenaでクエリを実行できるが、S3へのアップロードは不可」といったポリシーを設定可能です。

これは、社内でも開発部門と運用部門など、異なる役割を持つ人が同じ分析基盤を使う場合に特に重要となります。

テンプレートポリシーや条件付きアクセス(MFA利用時のみ実行可能など)も活用することで、より安全性を高めることが可能です。

7-2 暗号化(S3暗号化 / クエリ結果の暗号化)

データを守るうえで、暗号化の活用も欠かせません。Athenaでは、2つの主な暗号化方法があります。

1. S3バケット内のデータをサーバー側で自動暗号化(SSE)する

2. クエリ結果ファイル(通常S3にCSV形式で保存)が、自動で暗号化されるよう設定する

さらに、S3ではKMS(Key Management Service)を活用し、独自の鍵(カスタマー管理キー)で暗号化ポリシーを一元管理することも可能です。

この設定により、クエリ実行時のデータ流出リスクを低減し、コンプライアンス要件に適した運用が可能になります。

7-3 Athena Workgroupの活用による管理最適化

Athenaには「Workgroup(ワークグループ)」という単位があります。

これは、チームやプロジェクト単位でAthenaのクエリ実行環境を管理できる機能で、以下のようなメリットがあります。

- クエリ予算の上限設定(例:1日100ドルまで)

- クエリ実行ログの保存先変更

- メンバーに対して実行制限をかけるポリシー設計

例えば、開発チーム・分析チーム・外部委託チームなどのユースケースごとにWorkgroupを切り分けることで、無駄なコストやセキュリティリスクを減らし、ガバナンスの強化が実現できます。

8. よくあるユースケースと活用シナリオ

Amazon Athenaはその柔軟性とコスト効率の高さから、業種や規模にかかわらずさまざまな用途で活用されています。

ここでは、実際に多く使われている代表的なユースケースを3つ紹介し、それぞれの利用法や利点を解説します。

8-1 ログ解析(CloudTrail、ELBなど)

AWSを利用していると、CloudTrailやELB(Elastic Load Balancer)が出力するアクセスログや操作履歴ログが溜まっていきます。

Athenaなら、これらを改めて変換することなく、S3に保存されているままのログを対象としてクエリ可能です。

例えば、CloudTrailログから「誰が」「いつ」「どのリソースに」アクセスしたかを抽出することで、不正アクセスの検出や、内部向け監査に利用できます。

こうしたログデータは通常Gzip形式などで蓄積されているため、Athenaの圧縮形式対応も大きな強みとなります。

8-2 大規模データのアドホック分析

ビッグデータ分析で重要なのは、短時間で必要な視点からデータを切り出し試行錯誤を繰り返す「アドホック分析」です。

Athenaは、構築や待ち時間の短さ、そしてSQLベースという柔軟さが、この用途に非常に適しています。

例えば、何百万件におよぶCSVログを、何度でも条件を変えながら分析できるため、マーケティング部門や改善プロジェクトなどの不定形なデータ探索に最適です。

8-3 IoT、Webアプリ、マーケティングデータの分析など

センサーデバイスやWebサービスから収集される時系列データを、継続的に(ストリーミング的に)蓄積しながら、定期的にクエリして可視化するという使い方も増えています。

例えば、IoTセンサーから収集された温度データ、Webサイトのユーザー行動データ、広告キャンペーンごとのクリックデータなども、パーティションやクエリを工夫することで、リアルタイム性の高い分析対象になります。

AthenaとQuickSightを組み合わせることで、非エンジニア部門でもすぐに可視化・把握ができる体制が構築できます。

9. Athenaのメリットと課題

Athenaは非常に便利な分散型クエリエンジンですが、すべてのケースにおいて完璧というわけではありません。

このセクションでは、Athenaの長所と短所、他の分析基盤と比較したときの違いについてまとめます。

9-1 他分析基盤との比較(Redshift、EMRなど)

Athena:

- 目的:軽量かつ即時性のある分析

- 構成:サーバーレス、初期構築不要

- コスト:スキャン量ベースの従量課金

- 適用:ログ分析、アドホック、定例処理

Redshift:

- 目的:複雑な集計や長期的な保管

- 構成:専用クラスタ(チューニング必要)

- コスト:ストレージ+計算量+インスタンス

EMR:

- 目的:マシンラーニングや大量バッチ処理

- 構成:Hadoop/Sparkなどを活用したカスタマイズ可

- コスト:インスタンス+ボリューム使用量

以上から、Athenaは「柔軟で素早い分析」「構築のしやすさ」を最大の売りにしていることがわかります。

9-2 パフォーマンスチューニングのヒント

Athenaで処理パフォーマンスを上げるためには次のようなポイントが考えられます:

- ParquetやORCなどの列形式ファイルを使用

- 日時やカテゴリによるパーティション設計を徹底

- 必要なカラムのみにクエリ(SELECT * を避ける)

- Glue Crawlerによる正確なスキーマ登録

- Workgroupで無駄なクエリを制限

こうした運用ノウハウを積み上げることで、より生産性の高いデータ分析環境を構築できます。

9-3 注意点(クエリコストや制限事項)

Athenaでもクエリを雑に発行すると大きなスキャンが発生し、高いコストが発生する恐れがあります。

他にも、同時実行数(最大20まで)、ジョイン時のスキャン効率、Glueカタログのキャッシュ更新のタイミングなど、設計時に留意すべき制限事項があります。

これらを正しく把握したうえで、適切な使い方をすることで、Athenaの効果は最大限発揮されます。

10. Athenaの今後と最新アップデート

Athenaは常に進化するサービスです。最近では新機能や拡張オプションが数多く提供されており、より使いやすく高性能な分析基盤として進化を遂げています。

10-1 最近の機能追加(CTAS、UNLOADなど)

代表的な新機能として、「CTAS(Create Table As Select)」があります。

これは、Athenaでのクエリ結果を新しいテーブルとして直接保存できる機能で、処理結果の再利用やデータのサブセット作成に便利です。

また「UNLOAD文」も登場しました。これは、クエリ結果をParquetやCSV形式で指定フォルダに出力する機能です。

大量の結果を分割保存したい場合や、次の分析・共有に備えた保存処理に役立ちます。

10-2 将来的な進化予想と運用のヒント

今後Athenaはさらに以下のような方向で進化すると考えられます:

- クエリ実行後の自動アラート連携

- 高度なクエリ管理(タグによる課金単位の細分化など)

- 他のAI / 機械学習連携との統合強化

運用面では、Athenaの特性を理解したエンジニアリングが不可欠です。

Glueとの連携、複数バージョン管理、QuickSightの統合など、社内全体での「データ基盤」としての活用が重要になるでしょう。


contact お気軽にご連絡下さい。