はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- あると良いAthenaでクエリを実行した経験
※ このハンズオンは すべてコンソールだけで完結します。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
Athenaを最初に使うときは、primaryという共通のワークグループが使われます。チームで使う場合や、用途を分けたい場合(検証用、本番分析用など)には、専用のワークグループを作り、クエリ結果の保存先や、データ使用量の上限を個別に設定できます。
今回は新しいワークグループを作成し、出力先をデフォルトと異なるS3の場所に設定します。さらに「1クエリあたりのデータ使用量の上限」を低く設定し、それを超えるクエリがどうなるかを確認します。
ワークグループを分けると、料金の集計も分けられるの?
はい。ワークグループ単位でクエリの実行履歴やデータ使用量を確認できるため、コスト配分タグと組み合わせれば、部署やプロジェクト単位の利用量を把握しやすくなります。
データ使用量の上限を超えたクエリは、途中まで実行されて料金がかかるの?
「クエリ単位の上限」を設定した場合、Athenaは実行前にスキャン予定量を見積もり、上限を超えそうなクエリを実行前にキャンセルする仕組みです。今回はこのクエリ単位の上限を試します。
クエリ結果の保存先を独自に指定したワークグループを作成し、そのワークグループで実行したクエリの結果が指定した場所に保存されることを確認したうえで、データ使用量の上限を低く設定し、上限を超えるクエリが拒否されることを確認する。
つくる構成
既定のワークグループと、今回新しく作成するワークグループの設定を比較します。
最初から用意されているワークグループ
今回作成する専用のワークグループ
要件
以下の要件を満たし、ワークグループの設定がクエリの動きにどう影響するかを確認してください。
| No | 要件 |
|---|---|
| 1 | 小さなテストデータ(CSVファイル1つ)をS3に置き、Athenaでテーブルを1つ手動定義する。 |
| 2 | ワークグループを1つ新規作成する(名前は自由、例:handson-wg)。クエリ結果の保存先に、デフォルトとは別のS3の場所を指定する。 |
| 3 | このワークグループを選択した状態でクエリを実行し、指定したS3の場所に結果ファイルが保存されていることを確認する。 |
| 4 | このワークグループの設定で、1クエリあたりのデータ使用量制限を低い値(例:10MB)に設定する。 |
| 5 | テーブルに対するクエリを実行し、上限を超えると見積もられたクエリがエラーで拒否されることを確認する。 |
構築の進め方
「ワークグループを作る」→「出力先を確認する」→「上限を設定する」→「拒否されることを確認する」という順番で進めます。
- フェーズ1 — ワークグループを作る
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
新しいワークグループを作成する
Athenaコンソールの「ワークグループ」から「ワークグループを作成」を選びます。名前を自由に決め(例:
handson-wg)、クエリ結果の出力先に、既定とは別のS3の場所(例:s3://athena-demo-yourname/handson-wg-results/)を指定します。 - フェーズ2 — テストデータを使ってクエリを実行し、出力先を確認
-
テスト用のテーブルを用意する
小さなCSVファイル(数行程度)をS3にアップロードし、Athenaでテーブルを1つ手動定義します。
-
作成したワークグループを選んでクエリを実行する
クエリエディタの画面上部で、ワークグループを
handson-wgに切り替えてから、テーブルに対するSELECTクエリを実行します。 -
結果の保存先を確認する
S3コンソールで、手順2で指定した出力先のフォルダを開き、クエリ結果のファイルが保存されていることを確認します。
- フェーズ3 — データ使用量の上限を設定する
-
ワークグループの設定を編集する
handson-wgの設定画面で、「クエリごとのデータ使用量を制限する」を有効にし、上限を低い値(例:10MB)に設定します。小さなテーブルでも上限を超えさせる上限を極端に低く設定することで、わざとテストデータでも上限を超える状況を作り出します。本番運用では、想定されるクエリの規模に応じた上限を設定します。
- フェーズ4 — 上限を超えて拒否されることを確認する
-
同じクエリをもう一度実行する
手順5と同じ
SELECTクエリを、handson-wgのまま実行します。# データ使用量の上限を超えたというエラーで拒否されるはず SELECT * FROM handson_db.<テーブル名>;これがゴールクエリが実行前の見積もり段階で拒否されることを確認できたら、このハンズオンの目的は達成です。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。
「設定したのに、primaryのままクエリが実行されている」
クエリエディタ画面のワークグループの選択欄が、本当にhandson-wgになっているか見直しましょう。切り替えを忘れると、既定のprimaryのままクエリが実行されます。
「上限を下げたはずなのに、普通に成功してしまう」
設定した上限の値と単位(MB/GBなど)が想定どおりか、保存が正しく完了しているかを見直しましょう。テーブルのデータ量が極端に少ない場合は、上限をさらに低く調整してみましょう。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。
- ワークグループ一覧に
handson-wgが表示され、出力先の設定が確認できる。 - 指定したS3の場所に、クエリ結果のファイルが保存されている。
- データ使用量の上限を設定した後、同じクエリを実行するとエラーで拒否される。
- エラーメッセージに、データ使用量の上限に関する内容が含まれている。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- チームで複数人がAthenaを使う場合、ワークグループを分けることにどんな利点があるでしょうか。
ヒント
出力先を分けることで結果ファイルが混在しなくなる点、データ使用量を個別に制限できる点、それぞれがどんな運用上のメリットにつながるか考えてみましょう。 - 「クエリ単位の上限」と「ワークグループ全体の月間上限」では、それぞれどんな場面で使い分けるとよいでしょうか。
ヒント
1回の大きすぎるクエリを防ぎたい場合と、月全体の利用量を一定額に抑えたい場合で、向いている設定がどう違うか考えてみましょう。 - データ使用量の上限を低く設定しすぎると、どのような不都合が起きそうでしょうか。
ヒント
本来必要な分析クエリが、上限のせいで実行できなくなってしまう場面を想像してみましょう。コスト管理と使いやすさのバランスという観点がヒントです。
後片づけ
作成したリソースを順番に削除します。
- ワークグループを削除する:Athenaコンソールの「ワークグループ」一覧から
handson-wgを削除します。 - テーブルを削除する:Athenaのエディタで
DROP TABLEを実行します。 - S3バケットを空にして削除する:テストデータ・クエリ結果のファイルをすべて削除してから、バケット本体を削除します。
コストに関する注意: ワークグループの作成・設定自体に料金はかかりません。Athenaは、クエリが実際にスキャンしたデータ量に応じて課金されます(拒否されたクエリにはスキャン料金はかかりません)。S3の保存容量・リクエストにも別途料金がかかりますが、少量であれば無料利用枠の範囲内に収まることが多いです。検証が終わったら、上の「後片づけ」に沿って忘れずに削除しましょう。最新の料金は AWS の公式料金ページで確認してください。