TL

Cloud Service

Amazon Athena

S3上のデータに標準SQLを直接実行できるサーバーレスなクエリサービス。サーバー管理なしでスキャン量に応じて課金。

基礎DEA-C01SAA-C03コスト最適化パフォーマンス効率
最終更新: 2026-06-13公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.S3に置いたファイルへ、データを移さず標準SQLでそのまま問い合わせる。
  • 2.サーバー不要。クエリがスキャンしたデータ量に応じて課金される。
  • 3.列指向フォーマットとパーティションでスキャン量を減らし高速・安価に。

解決する課題

S3にログやCSV、JSONを貯めたものの「分析するにはデータベースに取り込んで…」と手間がかかる、という場面は多くあります。Athenaなら:

  • S3のデータを移動・ロードせずにその場で標準SQLで分析できる
  • クラスタやサーバーを一切管理しない(サーバーレス)
  • 使ったときスキャンした分だけ支払い、待機コストが発生しない

アドホックなログ調査、データレイクの探索的分析、たまにしか走らないレポート集計などに向きます。

主要概念と用語

  • クエリエンジン: SQLの実行基盤。分散SQLエンジンをベースにしており、標準SQLでS3上のデータを処理する
  • データカタログ: テーブルのスキーマ(列名・型・S3の場所)を管理するメタデータ。一般的にはAWS Glueデータカタログを利用する
  • テーブル / スキーマ: S3上のファイル群を「表」として見せる定義。実データはS3に置いたまま
  • パーティション: 日付などのキーでデータをフォルダ分割し、スキャン範囲を絞る仕組み
  • ワークグループ: クエリを論理的に分離し、出力先・暗号化・コスト上限などをまとめて管理する単位
  • クエリ結果の出力先: 実行結果を保存するS3バケット(ワークグループで指定)

仕様・制限・クォータ

  • 課金は基本的にスキャンしたデータ量に対して発生する(圧縮・列指向・パーティションで削減可能)
  • データの取り込みやインデックス作成は不要で、S3に置けばすぐクエリできる
  • 一度に実行できる同時クエリ数や1クエリの実行時間などにサービスクォータがあり、必要に応じて引き上げを申請できる
  • CSV、JSON、ORC、Parquet、Avroなど複数のフォーマットを扱える
  • 結果は指定したS3に保存され、後から再取得できる
スキャン量が料金に直結

Athenaの料金とパフォーマンスは「読み取ったデータ量」でほぼ決まります。SELECT句で必要な列だけ選び、WHERE句でパーティションを絞ることが、そのまま節約と高速化になります。

内部の仕組み

Athenaはサーバーレスで、ユーザーがクラスタを用意する必要はありません。クエリを投げると、AWS側で必要な計算リソースが割り当てられ、S3上のオブジェクトを直接読み取って分散処理し、結果を指定のS3バケットへ書き出します。

  • テーブル定義は実データではなくメタデータに過ぎず、データはS3に置いたまま(読み取り時にスキーマを適用する方式)
  • スキーマはGlueデータカタログなどで管理し、複数サービス間で共有できる
  • パーティションを使うと、WHERE句の条件に合致するフォルダだけを読むため、スキャン量を大幅に削減できる
データはコピーされない

Athenaはデータを内部に取り込みません。S3のオブジェクトを直接読むため、ファイル構成やフォーマットがそのままパフォーマンスとコストに影響します。

設計パターン / ベストプラクティス

  • 列指向フォーマット(Parquet/ORC)へ変換: 必要な列だけ読めるため、スキャン量と料金を大きく減らせる
  • パーティション設計: 日付やリージョンなど、よく絞り込むキーでフォルダ分割する
  • 圧縮: gzipやsnappyなどで圧縮し、読み取りバイト数を減らす
  • 小さすぎるファイルを避ける: 大量の小ファイルはオーバーヘッドになるため、適度なサイズへまとめる
  • BIツール連携: ダッシュボード用途ではキャッシュやビューを併用し、繰り返しのフルスキャンを避ける

運用・監視

  • 実行履歴から各クエリのスキャン量・実行時間を確認し、重いクエリを特定する
  • ワークグループごとにクエリのスキャン上限(バイト数の上限)を設定し、想定外の高額クエリを抑止できる
  • CloudWatchへメトリクスを送り、処理データ量や実行時間を監視できる
  • CloudTrailでクエリ実行などのAPI操作を監査できる

コスト

  • 基本はスキャンしたデータ量に対する従量課金で、待機中のコストは発生しない
  • 列指向フォーマット化・圧縮・パーティションでスキャン量を減らすほど安くなる
  • クエリ結果保存用のS3ストレージ料金は別途かかる
  • ワークグループのスキャン上限で1クエリあたりの上限コストをガードできる
安くする三点セット

「Parquet等の列指向」「圧縮」「パーティション」の3つを押さえるだけで、同じ分析でもスキャン量が桁違いに減り、料金と実行時間の両方が改善します。

セキュリティ

  • アクセス制御はIAMで行い、対象S3バケットやワークグループ単位で権限を絞る
  • クエリ結果は保存時にS3側で暗号化でき、鍵はKMSで管理できる
  • 通信はTLSで保護される
  • 列・行レベルのきめ細かなアクセス制御は、データカタログのアクセス管理機能と組み合わせて実現できる

Well-Architected の観点

  • コスト最適化: サーバー待機コストがなく、スキャン量削減がそのまま節約につながる。ワークグループで上限管理
  • パフォーマンス効率: 列指向・圧縮・パーティションで読み取り量を減らし、必要な計算だけを実行する
  • セキュリティ: 最小権限のIAM、結果の暗号化、監査ログの活用
  • 運用上の優秀性: サーバー管理が不要で、SQLだけで分析を運用できる

試験で問われるポイント

頻出
  • 「S3のデータをロードせず標準SQLで分析」「サーバーレスでアドホック分析」→ Athena
  • 料金・速度を改善する定番は 列指向フォーマット化・圧縮・パーティション(スキャン量を減らす)
  • 大規模で定常的なBI/ウェアハウス用途は Redshift、その場の探索的クエリは Athena
  • スキーマ管理は一般に Glueデータカタログ と連携する

関連サービス・比較

データウェアハウスの Amazon Redshift とよく比較されます。常時稼働の大規模分析基盤か、その場限りのサーバーレスクエリかで選びます。

観点AthenaRedshift
構成サーバーレス(管理不要)クラスタ型(プロビジョニング)
データの場所S3を直接クエリクラスタへロードして保持
課金スキャンしたデータ量クラスタ稼働時間など
向く用途アドホック・探索的分析大規模で定常のBI/集計

ハンズオン / CLI例

# ワークグループの出力先を指定してクエリを非同期実行 → 実行IDを取得
QID=$(aws athena start-query-execution \
  --query-string "SELECT status, count(*) FROM logs WHERE dt = '2026-06-13' GROUP BY status" \
  --query-execution-context Database=mydb \
  --work-group primary \
  --result-configuration OutputLocation=s3://my-athena-results/ \
  --query "QueryExecutionId" --output text)

# 実行状態とスキャン量を確認
aws athena get-query-execution --query-execution-id "$QID" \
  --query "QueryExecution.{State:Status.State,Scanned:Statistics.DataScannedInBytes}"

# 結果の取得
aws athena get-query-results --query-execution-id "$QID"

AWS Service

Amazon Athenaを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

分析

比較で見る軸

クラウド: AWS / カテゴリ: 分析 / 難易度: basic

導入後に効く点

サーバー不要。クエリがスキャンしたデータ量に応じて課金される。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
AWS
カテゴリ
分析
難易度
basic
関連資格
DEA-C01 / SAA-C03
設計柱
cost / performance

判断チェックリスト

  • 自社の用途が「分析 / cost」に近いか確認する。
  • 強みである「S3に置いたファイルへ、データを移さず標準SQLでそのまま問い合わせる。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

分析costperformanceDEA-C01SAA-C03