メインコンテンツへ移動
SAA-C03High-Performing Architectures難易度標準

SAA-046

S3に蓄積された数TBのアクセスログに対し、月に数回だけアドホックなSQL分析を実行したいです。分析基盤の常時稼働コストとインフラ管理を避けたい場合、最も適したサービスはどれですか?

選択肢

解説と正解

解説と正解を読む(先に自分で回答してから開くのがおすすめです)

正解:B. Amazon Athenaで、S3上のデータに対して直接SQLクエリを実行する

解説

Amazon AthenaはS3上のデータへ直接SQLを実行できるサーバーレスのクエリサービスで、スキャンしたデータ量に対してのみ課金されます。クラスターの構築も常時稼働も不要なため、実行頻度の低いアドホック分析に最も適しています。

選択肢ごとの解説

A. Amazon RDS for PostgreSQLインスタンスにログを取り込み、SQLで集計する

RDSは常時稼働のインスタンス課金であり、数TBのログを取り込む処理と保存領域の確保も必要です。アドホックな分析用途には向きません。

B. Amazon Athenaで、S3上のデータに対して直接SQLクエリを実行する

正解です。テーブル定義をGlueデータカタログに登録すれば、データをS3に置いたまま即座にクエリできます。

C. Amazon Redshiftのプロビジョンドクラスターを作成し、ログをロードしてクエリする

Redshiftのプロビジョンドクラスターは起動している間ずっと課金されます。ログのロード作業も必要で、月数回の利用に対しては過剰な構成です。

D. Amazon EMRクラスターを起動し、Spark SQLで集計する

EMRクラスターは必要なときだけ起動する運用も可能ですが、クラスターの構成管理やジョブの実装が必要で、SQL分析だけが目的なら運用負荷が過大です。

実務での使いどころ

Amazon Athena は、S3 に置かれたデータへ標準 SQL を直接実行できるサーバーレスのクエリサービスである。データを別のデータベースへロードする必要がなく、テーブルのスキーマを AWS Glue データカタログに登録するだけでクエリできる。CSV、JSON、ORC、Parquet、Avro といった形式に対応し、CloudTrail ログ、VPC フローログ、ALB アクセスログ、CloudFront ログといった AWS が出力するログの分析用途で広く使われる。課金はクエリがスキャンしたデータ量に対する従量制で、クラスターの起動時間に対する課金は発生しない。 コストと性能を左右するのは「スキャン量をいかに減らすか」である。データを Parquet や ORC といった列指向フォーマットへ変換すると、必要な列だけを読むため CSV や JSON に比べてスキャン量が大幅に減る。加えて、S3 のキー設計を年 / 月 / 日などで区切ってパーティション化し、WHERE 句でパーティション列を指定すれば、対象外のファイルを読まずに済む。データ量が増えてきたら圧縮(Snappy / GZIP)も併用する。分析基盤の選択肢としては、繰り返し実行する定型のダッシュボードやサブ秒応答が求められる BI 用途なら Amazon Redshift、大規模な ETL や機械学習の前処理なら Amazon EMR や AWS Glue、という棲み分けになる。 SAA-C03 では「S3 上のデータをそのまま SQL で分析したい」「サーバーレスで始めたい」「アドホックな分析」「クエリした分だけ課金」というキーワードが出たら Athena が正解になる。誤答には Redshift クラスター(常時稼働のコスト)、RDS へのロード(取り込み負荷)、EMR クラスター(運用負荷)が並ぶ。逆に「日常的に大量の集計を高速に行う」「多数のユーザーが同時にダッシュボードを見る」という条件なら Redshift が正解になるという読み分けも押さえておきたい。

関連リンク

関連サービス

関連用語