分析サービス(Athena / Glue / EMR / QuickSight 等)
AWS の分析サービスは、S3 に貯めたデータを「集める → 整える → 問い合わせる → 見せる」という流れの中で役割を分け合っています。SAA では、要件の言い回しから「どの段階の、どのサービスか」を選ぶ問題が出ます。特に Athena・Glue・EMR・Lake Formation・QuickSight(現在の名称は Amazon Quick の一部の Quick Sight)の使い分けが中心です。
ひとことで言うと: S3 をデータの置き場(データレイク)にして、変換は Glue、SQL での検索は Athena、大規模な分散処理は EMR、グラフ化は QuickSight、権限の管理は Lake Formation が受け持ちます。
たとえるなら、S3 は「倉庫」、Glue は「荷物を仕分けて棚札(カタログ)を付ける係」、Athena は「棚札を見て必要な箱だけ探す検索係」、QuickSight は「結果を報告書のグラフにする係」です。
このページで押さえる論点
- データレイクと分析の流れ(取り込み → 変換 → 問い合わせ → 可視化)
- Amazon Athena: S3 のデータをサーバーなしで SQL 検索(コストの下げ方)
- AWS Glue: データカタログ・クローラー・ETL ジョブ(CSV → Parquet の変換)
- Amazon EMR: Hadoop / Spark のクラスター(ノードの種類とスポットインスタンス)
- AWS Lake Formation: データレイクの保護と細かいアクセス権
- Amazon QuickSight: ダッシュボードで可視化(SPICE)
- 要件からサービスを選ぶ(Redshift・Kinesis との関係も含む)
データレイクと分析の流れ
データレイクとは、形式をそろえる前の生データも含めて、さまざまなデータを 1 か所にまとめて置いておく場所のことです。AWS では、安くて容量の上限を気にしなくてよい Amazon S3 をデータレイクにするのが基本です。データを置いたあと、必要に応じて形式を整え、分析サービスで読みます。
分析の流れは、次の 4 段階で考えると整理しやすくなります。試験の問題文も「どの段階の困りごとか」を読み取れば、答えのサービスが絞れます。
| 段階 | やること | 主なサービス |
|---|---|---|
| ① 取り込み | データを S3 などに集める。一定間隔でまとめて送るか、絶え間なく流し込むか(ストリーミング)を決める | Kinesis・Data Firehose(ストリーミング)、DataSync など(まとめて転送) |
| ② 変換・カタログ化 | 形式を変える(CSV → Parquet など)、不要なデータを除く、どこに何のデータがあるかの目録(カタログ)を作る | AWS Glue(クローラー・データカタログ・ETL ジョブ) |
| ③ 問い合わせ・処理 | SQL で検索する、大量データを分散処理する | Amazon Athena、Amazon EMR、Amazon Redshift |
| ④ 可視化 | 結果をグラフやダッシュボードにして共有する | Amazon QuickSight |
この 4 段階をまたいで「誰がどのデータを見てよいか」を管理するのが AWS Lake Formation です。取り込みのうちストリーミング(Kinesis)や、データウェアハウス(Redshift)はそれぞれ別ページで詳しく扱います。
ETL は Extract(取り出す)・Transform(変換する)・Load(書き込む)の頭文字で、「データを取り出して形を整え、分析しやすい場所に入れ直す処理」のことです。
Amazon Athena: S3 のデータを SQL で検索
Athena は、S3 に置いたデータを標準 SQL でそのまま検索できるサーバーレスのサービスです。サーバーやデータベースを用意する必要がなく、データを別の場所に読み込む(ロードする)必要もありません。クエリを投げると、裏側で自動的に並列処理され、結果が数秒で返ります。
料金は、実行したクエリがスキャン(読み取り)したデータ量で決まります。サーバーを動かし続ける費用はかからないので、「たまにしか分析しない」「アドホック(その場限り)なクエリを実行したい」という要件に向きます。
スキャン量が料金に直結するため、次の工夫でコストと時間を減らせます。試験で「Athena のコストを下げたい」と問われたら、この 3 つが答えの候補です。
| 工夫 | なぜ安く・速くなるか |
|---|---|
| 列指向形式(Apache Parquet・ORC)に変換 | 必要な列だけを読めるので、使わない列をスキャンしない |
| 圧縮する | ファイルが小さくなった分だけスキャン量が減る |
| パーティション分割(例: 年/月/日ごとのフォルダ) | WHERE 句で絞った期間のフォルダだけを読むので、関係のないデータを読まない |
列指向形式とは、データを「行ごと」ではなく「列ごと」にまとめて保存する形式です。CSV は行ごとに保存するので、1 列だけ欲しくても全部の列を読むことになります。CSV から Parquet への変換には、次の Glue の ETL ジョブを使うのが定番です。
Athena は、テーブルの定義(どの S3 の場所に、どんな列のデータがあるか)を AWS Glue データカタログから読みます。そのため、Glue と組み合わせて使うのが基本形です。
AWS Glue: カタログ化と ETL
AWS Glue は、分析や機械学習のためにデータを探し、整え、つなぎ合わせるサーバーレスのデータ統合サービスです。負荷に合わせて自動でスケールするので、ETL 用のサーバーを管理する必要はありません。主な部品は次のとおりです。
| 部品 | 役割 |
|---|---|
| データカタログ | データの場所と構造(スキーマ)の目録。Athena・EMR・Redshift Spectrum・Lake Formation が共通で使う |
| クローラー | S3 などのデータを自動で調べ、スキーマを推測してデータカタログにテーブルを登録する |
| ETL ジョブ | Apache Spark(または Ray)でデータを変換する。CSV → Parquet の変換や、データの結合・クレンジング(汚れたデータの修正)に使う |
| ジョブのブックマーク | 処理済みのデータを記録し、次の実行では新しく増えた分だけを処理する(同じデータを二重に処理しない) |
| トリガー・ワークフロー | スケジュールやイベントでジョブを自動実行し、複数のクローラーとジョブをつなげる |
| Glue Studio・DataBrew | Glue Studio は画面上で ETL の流れを組み立てる機能。DataBrew はコードを書かずにデータを整える(前処理する)サービス |
試験では「毎日 S3 に届く CSV を、運用の手間をかけずに Parquet に変換して Athena で分析したい」のような要件がよく出ます。答えは「Glue のクローラーでカタログ化し、Glue の ETL ジョブで Parquet に変換」です。EC2 で変換スクリプトを動かす選択肢は、サーバーの管理が必要になるので「運用の手間」の点で劣ります。
Amazon EMR: ビッグデータ用のクラスター
Amazon EMR は、Apache Hadoop や Apache Spark などのビッグデータ用フレームワークを動かすマネージドなクラスターのサービスです。クラスターとは、複数のサーバー(ノード)をまとめて 1 つの大きな計算機として使う仕組みです。大量のデータを多数のノードに分けて並列に処理します。
Glue もサーバーレスで Spark を動かせますが、EMR はクラスターの構成(ノードの種類や台数、使うフレームワークとそのバージョン、細かな設定)を自分で決められる点が違います。「既存の Hadoop / Spark の処理をそのまま AWS へ移したい」「設定を細かく調整したい」なら EMR、「サーバーの管理をせずに ETL したい」なら Glue、と覚えます。
EMR のクラスターには 3 種類のノードがあります。スポットインスタンス(EC2 の空き容量を安く使えるが、途中で中断されることがある購入方法)をどこに使うかがよく問われます。
| ノード | 役割 | HDFS にデータを保存するか | スポットインスタンス |
|---|---|---|---|
| プライマリノード | クラスター全体を管理し、ジョブの状態を追跡する | 管理用のサービスを動かす | 止まるとクラスター全体に影響するので向かない |
| コアノード | データの保存(HDFS)と計算の両方を行う | 保存する | 止まるとデータを失うおそれがあるので慎重に |
| タスクノード | 計算だけを行い、処理能力を足す | 保存しない | 向いている(止まってもジョブが失敗しないよう EMR が調整する) |
HDFS(Hadoop 分散ファイルシステム)は、クラスターのノードのディスクにデータを分けて保存する仕組みです。「処理能力を安く一時的に増やしたい」という要件には、タスクノードをスポットインスタンスで追加するのが定番の答えです。
AWS Lake Formation: データレイクの保護
AWS Lake Formation は、データレイクを一元的に管理・保護し、共有するためのサービスです。メタデータ(データについての情報)は Glue データカタログに置き、その上で「誰がどのデータベース・テーブル・列・行を見てよいか」を Lake Formation で決めます。
- 細かいアクセス権: 列単位(個人情報の列を隠す)、行単位(自分の部署の行だけ見せる)、セル単位で制御できます。
- まとめて効く: 設定した権限は Athena・Redshift Spectrum・EMR・QuickSight・Glue などの分析サービスに共通で適用されます。サービスごとに権限を作り分ける必要がありません。
- タグで管理: LF タグ(Lake Formation 用のタグ)を付けて、タグ単位で権限を与えることもできます。テーブルが多いときの運用が楽になります。
- アカウント間の共有: 別の AWS アカウントにも、細かい権限を付けたままデータを共有できます。
IAM ポリシーや S3 のバケットポリシーでも S3 へのアクセスは制御できますが、制御できるのは基本的に「バケットやオブジェクト(ファイル)」の単位です。「テーブルの特定の列だけ隠したい」という要件は、Lake Formation を選びます。
Amazon QuickSight: ダッシュボードで可視化
Amazon QuickSight は、データをグラフやダッシュボードにして共有する BI(ビジネスインテリジェンス)サービスです。サーバーを用意する必要はありません。Athena・Redshift・RDS・S3 など多くのデータソースに接続できます。現在は、AI 機能をまとめた Amazon Quick の中の「Quick Sight」という名前になっており、SAA-C03 の試験ガイドにも「Amazon Quick」と書かれています。問題文に「QuickSight」と「Quick」のどちらが出ても、同じ可視化のサービスと考えて構いません。
SPICE(Super-fast, Parallel, In-memory Calculation Engine)は QuickSight のインメモリ(メモリ上で計算する)エンジンです。データを SPICE に取り込んでおくと、グラフを開くたびに元のデータソースへ問い合わせる必要がなく、表示が速くなります。取り込んだデータは何度使ってもデータソース側に追加の問い合わせ料金がかからないので、「Athena に何度も同じクエリが飛んでコストがかさむ」という問題の対策にもなります。
ダッシュボードは、自社のアプリや Web サイトに埋め込むこともできます。「経営層に売上のダッシュボードを見せたい」「データを可視化したい」という言い回しが出たら QuickSight を選びます。
要件からサービスを選ぶ
下のフローチャートで、要件から分析サービスを選ぶ練習をしてみましょう。
質問に答えて分析サービスを選ぶ
やりたいことを思い浮かべて「はい / いいえ」で答えてください。答えた経路が上から順に表示されます。
※簡略化しています: 実際の構成では、Glue でカタログ化 → Athena で検索 → QuickSight で可視化、のように複数のサービスを組み合わせます。フローでは「いちばん中心になるサービス」を 1 つだけ示しています。ストリーミングの取り込み(Kinesis)は分岐に含めていません。
| サービス | ひとことで | サーバー管理 |
|---|---|---|
| Amazon Athena | S3 のデータに SQL で問い合わせる | 不要(サーバーレス) |
| AWS Glue | カタログ化と ETL(形式変換) | 不要(サーバーレス) |
| Amazon EMR | Hadoop / Spark のクラスターで大規模処理 | クラスター構成を自分で決める |
| AWS Lake Formation | データレイクの権限を一元管理(列・行単位) | 不要 |
| Amazon QuickSight | ダッシュボードで可視化・共有 | 不要 |
| Amazon Redshift | データウェアハウス。大量データの複雑な集計を繰り返し実行 | 別ページで扱う |
| Amazon Kinesis・Data Firehose | ストリーミングデータの取り込み | 別ページで扱う |
問題文のキーワード → 選ぶべき答え
| 問題文の言い回し | 答えと理由 |
|---|---|
| 「S3 のログをサーバーを管理せずに SQL で分析」「アドホックなクエリ」 | Amazon Athena。サーバーレスで S3 を直接検索する |
| 「Athena のクエリのコストを下げたい」「スキャン量を減らしたい」 | Parquet などの列指向形式・圧縮・パーティション分割 |
| 「CSV を Parquet に変換」「運用負荷の少ない ETL」 | AWS Glue の ETL ジョブ。サーバーレスで Spark を動かす |
| 「S3 のデータのスキーマを自動で見つけてカタログ化」 | AWS Glue クローラー(データカタログに登録) |
| 「前回処理したデータを再処理しない」 | Glue のジョブのブックマーク |
| 「既存の Hadoop / Spark ジョブを移行」「クラスターの設定を細かく調整」 | Amazon EMR |
| 「EMR の処理能力を安く一時的に増やす」 | タスクノードをスポットインスタンスで追加。HDFS を持たないので中断されてもデータを失わない |
| 「データレイクの特定の列・行だけを見せたい」「分析サービス共通の権限管理」 | AWS Lake Formation |
| 「ダッシュボードで可視化」「経営層にグラフを共有」「BI」 | Amazon QuickSight(Amazon Quick) |
| 「ダッシュボードの表示を速くしたい」「同じクエリが何度も実行される」 | SPICE にデータを取り込む |
引っかけポイント
- 「Athena を使うには、まずデータをデータベースにロードする」→ ✕。Athena は S3 のデータをその場で検索する。ロードが必要なのはデータウェアハウス(Redshift)
- 「Athena の料金はクエリの実行時間で決まる」→ ✕。SQL クエリはスキャンしたデータ量で決まる。だから列指向形式・圧縮・パーティションが効く
- 「CSV を Parquet に変換するために EC2 でスクリプトを動かす」→ 動くが、「運用負荷を最小に」なら ✕。サーバーレスの Glue を選ぶ
- 「EMR のコアノードをすべてスポットインスタンスにしてコストを下げる」→ ✕。コアノードは HDFS のデータを持つので、中断されるとデータを失うおそれがある。スポットはタスクノードに使う
- 「列単位のアクセス制御を S3 バケットポリシーで行う」→ ✕。バケットポリシーはバケットやオブジェクトの単位。列・行の単位は Lake Formation
- 「QuickSight でデータを変換(ETL)する」→ ✕。QuickSight は可視化のサービス。変換は Glue
まとめ: SAA 試験で押さえるポイント
- データレイクの置き場は S3。流れは「取り込み → 変換・カタログ化 → 問い合わせ → 可視化」で、段階ごとにサービスが分かれる
- Athena はサーバーレスで S3 を SQL 検索。料金はスキャン量なので、Parquet・圧縮・パーティションで安く速くする
- Glue はサーバーレスの ETL。クローラーでスキーマを推測してデータカタログへ、ETL ジョブで CSV → Parquet、ブックマークで差分だけ処理
- Glue データカタログは Athena・EMR・Redshift Spectrum・Lake Formation が共通で使う目録
- EMR は Hadoop / Spark のマネージドなクラスター。スポットインスタンスは HDFS を持たないタスクノードに使う
- Lake Formation は列・行・セル単位のアクセス権を、分析サービスにまとめて適用する
- QuickSight(現在は Amazon Quick の Quick Sight)はダッシュボードで可視化。SPICE に取り込むと速く、データソースへの問い合わせも減る
確認問題
参考リンク
AWS 公式ドキュメント(外部サイトが開きます)。