← ハンズオン一覧に戻る

AWS Hands-on / Data Analytics

専用のワークグループで、
クエリの出力先と上限を管理する

Amazon Athena の「ワークグループ」を使うと、クエリ結果の保存先や、1回のクエリでスキャンできるデータ量の上限などを、用途ごとに分けて管理できます。新しいワークグループを作り、自分専用の出力先と上限を設定して、その効果を確認します。

● Lv.1 AWSを触りはじめた人 ⏱ 所要 25〜40 分 コンソールのみで完結
01 — Prerequisites

はじめる前に

  • 必須AWS アカウントを持っていること
  • 必須マネジメントコンソールにサインインできること
  • あると良いAthenaでクエリを実行した経験

※ このハンズオンは すべてコンソールだけで完結します

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

Athenaを最初に使うときは、primaryという共通のワークグループが使われます。チームで使う場合や、用途を分けたい場合(検証用、本番分析用など)には、専用のワークグループを作り、クエリ結果の保存先や、データ使用量の上限を個別に設定できます。

今回は新しいワークグループを作成し、出力先をデフォルトと異なるS3の場所に設定します。さらに「1クエリあたりのデータ使用量の上限」を低く設定し、それを超えるクエリがどうなるかを確認します。

ワークグループを分けると、料金の集計も分けられるの?

はい。ワークグループ単位でクエリの実行履歴やデータ使用量を確認できるため、コスト配分タグと組み合わせれば、部署やプロジェクト単位の利用量を把握しやすくなります。

データ使用量の上限を超えたクエリは、途中まで実行されて料金がかかるの?

「クエリ単位の上限」を設定した場合、Athenaは実行前にスキャン予定量を見積もり、上限を超えそうなクエリを実行前にキャンセルする仕組みです。今回はこのクエリ単位の上限を試します。

Goal

クエリ結果の保存先を独自に指定したワークグループを作成し、そのワークグループで実行したクエリの結果が指定した場所に保存されることを確認したうえで、データ使用量の上限を低く設定し、上限を超えるクエリが拒否されることを確認する。

04 — Architecture

つくる構成

既定のワークグループと、今回新しく作成するワークグループの設定を比較します。

primary(既定)

最初から用意されているワークグループ

出力先アカウント共通の設定
データ使用量の上限なし(既定)
handson-wg(新規作成)

今回作成する専用のワークグループ

出力先独自に指定したS3の場所
データ使用量の上限クエリ単位で低く設定
05 — Requirements

要件

以下の要件を満たし、ワークグループの設定がクエリの動きにどう影響するかを確認してください。

No要件
1小さなテストデータ(CSVファイル1つ)をS3に置き、Athenaでテーブルを1つ手動定義する。
2ワークグループを1つ新規作成する(名前は自由、例:handson-wg)。クエリ結果の保存先に、デフォルトとは別のS3の場所を指定する。
3このワークグループを選択した状態でクエリを実行し、指定したS3の場所に結果ファイルが保存されていることを確認する。
4このワークグループの設定で、1クエリあたりのデータ使用量制限を低い値(例:10MB)に設定する。
5テーブルに対するクエリを実行し、上限を超えると見積もられたクエリがエラーで拒否されることを確認する。
06 — Steps

構築の進め方

「ワークグループを作る」→「出力先を確認する」→「上限を設定する」→「拒否されることを確認する」という順番で進めます。

  1. フェーズ1 — ワークグループを作る
  2. マネジメントコンソールにサインインし、リージョンを合わせる

    ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。

  3. 新しいワークグループを作成する

    Athenaコンソールの「ワークグループ」から「ワークグループを作成」を選びます。名前を自由に決め(例:handson-wg)、クエリ結果の出力先に、既定とは別のS3の場所(例:s3://athena-demo-yourname/handson-wg-results/)を指定します。

  4. フェーズ2 — テストデータを使ってクエリを実行し、出力先を確認
  5. テスト用のテーブルを用意する

    小さなCSVファイル(数行程度)をS3にアップロードし、Athenaでテーブルを1つ手動定義します。

  6. 作成したワークグループを選んでクエリを実行する

    クエリエディタの画面上部で、ワークグループをhandson-wgに切り替えてから、テーブルに対するSELECTクエリを実行します。

  7. 結果の保存先を確認する

    S3コンソールで、手順2で指定した出力先のフォルダを開き、クエリ結果のファイルが保存されていることを確認します。

  8. フェーズ3 — データ使用量の上限を設定する
  9. ワークグループの設定を編集する

    handson-wgの設定画面で、「クエリごとのデータ使用量を制限する」を有効にし、上限を低い値(例:10MB)に設定します。

    小さなテーブルでも上限を超えさせる

    上限を極端に低く設定することで、わざとテストデータでも上限を超える状況を作り出します。本番運用では、想定されるクエリの規模に応じた上限を設定します。

  10. フェーズ4 — 上限を超えて拒否されることを確認する
  11. 同じクエリをもう一度実行する

    手順5と同じSELECTクエリを、handson-wgのまま実行します。

    Athena クエリエディタ
    # データ使用量の上限を超えたというエラーで拒否されるはず
    SELECT * FROM handson_db.<テーブル名>;
    これがゴール

    クエリが実行前の見積もり段階で拒否されることを確認できたら、このハンズオンの目的は達成です。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。

Pitfall 01 — ワークグループを切り替えたつもりが反映されない

「設定したのに、primaryのままクエリが実行されている」

クエリエディタ画面のワークグループの選択欄が、本当にhandson-wgになっているか見直しましょう。切り替えを忘れると、既定のprimaryのままクエリが実行されます。

Pitfall 02 — 上限を設定してもクエリが拒否されない

「上限を下げたはずなのに、普通に成功してしまう」

設定した上限の値と単位(MB/GBなど)が想定どおりか、保存が正しく完了しているかを見直しましょう。テーブルのデータ量が極端に少ない場合は、上限をさらに低く調整してみましょう。

08 — Checklist

完了チェック

要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。

  • ワークグループ一覧にhandson-wgが表示され、出力先の設定が確認できる。
  • 指定したS3の場所に、クエリ結果のファイルが保存されている。
  • データ使用量の上限を設定した後、同じクエリを実行するとエラーで拒否される
  • エラーメッセージに、データ使用量の上限に関する内容が含まれている。
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. チームで複数人がAthenaを使う場合、ワークグループを分けることにどんな利点があるでしょうか。
    ヒント
    出力先を分けることで結果ファイルが混在しなくなる点、データ使用量を個別に制限できる点、それぞれがどんな運用上のメリットにつながるか考えてみましょう。
  2. 「クエリ単位の上限」と「ワークグループ全体の月間上限」では、それぞれどんな場面で使い分けるとよいでしょうか。
    ヒント
    1回の大きすぎるクエリを防ぎたい場合と、月全体の利用量を一定額に抑えたい場合で、向いている設定がどう違うか考えてみましょう。
  3. データ使用量の上限を低く設定しすぎると、どのような不都合が起きそうでしょうか。
    ヒント
    本来必要な分析クエリが、上限のせいで実行できなくなってしまう場面を想像してみましょう。コスト管理と使いやすさのバランスという観点がヒントです。
10 — Clean up

後片づけ

作成したリソースを順番に削除します。

  1. ワークグループを削除する:Athenaコンソールの「ワークグループ」一覧からhandson-wgを削除します。
  2. テーブルを削除する:AthenaのエディタでDROP TABLEを実行します。
  3. S3バケットを空にして削除する:テストデータ・クエリ結果のファイルをすべて削除してから、バケット本体を削除します。

コストに関する注意: ワークグループの作成・設定自体に料金はかかりません。Athenaは、クエリが実際にスキャンしたデータ量に応じて課金されます(拒否されたクエリにはスキャン料金はかかりません)。S3の保存容量・リクエストにも別途料金がかかりますが、少量であれば無料利用枠の範囲内に収まることが多いです。検証が終わったら、上の「後片づけ」に沿って忘れずに削除しましょう。最新の料金は AWS の公式料金ページで確認してください。