こんにちは、CI2部の加藤ゆです。
Amazon Athenaにワークグループなるものがあるのをご存じですか?
本記事ではワークグループについて、概要を記載します。
そもそもAthenaとは
サーバーレスでS3に対して直接クエリの実行ができるサービスです。
データの保存先のS3を設定して、標準SQLでアドホックなクエリの実行が可能です。
クエリを実行するためのデータをフォーマットする必要はなく、S3においたデータに対して直接分析が出来ます。
機能1:保存したクエリ
Athena クエリエディタで実行したクエリ選択し、コンソール上でクエリを保存しておくことが出来ます。
クエリを保存すると「保存したクエリ」タブで確認することが出来ます。
【注意点】
- クエリはワークグループ/DBと依存している
- 対象のクエリが属するワークグループ/DBを変更することは出来ません。
- クエリの変更履歴は保存されない
- 特定のバージョンでクエリを保持したい場合には、別のクエリを新しく保存する必要があります。
機能2:クエリ履歴
コンソール上の「最近のクエリ」タブで「成功したクエリ」と「失敗したクエリ」の表示が出来ます(履歴は45日間保持) 実行IDよりクエリエディタの再現が可能であるので、失敗時のエラー表示が可能です
ワークグループとは?
ワークグループとは、ユーザ・チーム等でクエリ実行やクエリ履歴を分離することが出来る作業グループです。
デフォルトでは、リージョンあたり最大1000グループまで作成する事が出来ます。
- 特定のワークグループへのアクセス制御ができる
- ワークグループ全体で処理できるデータ量を制限できる
- クエリ毎のスキャンされるデータ量を制限できる
なにがうれしい?
- ワークグループ単位で実行クエリの管理が出来る
作成した各ワークグループには、アカウント内のすべてのクエリではなく、
ワークグループ内で実行されたクエリの"保存済みクエリ"と"クエリ履歴"のみが表示されます。
- ワークグループ単位でスキャン量を管理できる
クエリ毎のスキャン量、ワークグループ単位でスキャン量を把握・制限することが出来るので、分析環境を利用するうえでのコスト管理に役立てることが出来ます。
※ちなみにAthena の場合はスキャンされるデータ1TBあたり5.00USDのコストがかかります。
Amazon Athena Pricing – Serverless Interactive Query Service – Amazon Web Services
これにより、アカウント内の他のクエリとクエリを分離することが可能です。
DBごとに分けるも良し、部署ごとに分けるも良しです。
制約事項
そこまで致命的な制約はありません。
知っておいても良いと思うのは2.くらいでしょうか。
- アカウントのリージョンあたり、ワークグループは最大 1000 個
- プライマリワークグループ(デフォルトで存在しているワークグループ)は削除不可
- 各ワークグループでクエリタブは最大 10 個まで開ける
※ワークグループを切り替えた場合、クエリタブは最大 3 つのワークグループに対して開いたままの状態となる。
利用方法
ではさっそくワークグループを作成してみましょう。
ワークグループを作成
マネージドルールのAmazon Athenaへログインし、
左のナビゲーションペインから「ワークグループ」より、ワークグループの作成を選択
- ワークグループ名
- ※作成後にワークグループ名の変更は出来ません
- 分析エンジン
ワークグループで使用する分析エンジンのタイプを指定します ※作成後にエンジンタイプの変更は出来ません
- Athena SQL:S3に対して標準SQLを実行する場合はこちら
- Apache Spark:Python と Apache Spark を使用して Jupyter Notebook アプリケーションを利用する場合はこちら
クエリエンジンをアップグレード
- 自動を選択した場合、Athena コンソールとAWS Health Dashboardから通知を受信すると、すぐにアップグレード or サポートが終了するまで古いバージョンを使い続けるか選択可能です
ワークグループ作成のための手順は以上で終わりです。
続いて、オプションで設定できる機能があるので以下に記します。
オプション機能
クエリ結果の設定
クエリ結果の保存先S3を指定します。
オプション設定ではありますが、クエリを実行するためにはクエリ結果の保存先の設定が必須になるのでしておくと良いでしょう。
オプション
AWS CloudWatch にクエリメトリクスを発行
CloudWatch メトリクスによる Athena クエリのモニタリング - Amazon Athena
クエリの成功、ランタイム、およびメトリクスタブでスキャンされたデータ量をメトリクスとしてCloudWatch に送信、表示をする事ができます。
有効化するとこのように、ワークグループのパネルにメトリクスのタブが出現します(無効の場合、タブ自体がない状態です)
クエリごとのデータ使用状況の制御
クエリごとの制御制限は、クエリごとにスキャンされるデータの合計量を指定することが出来ます。
このワークグループで実行されるクエリが制限を超えると、クエリがキャンセルされる設定となっています。
(※データ制限は1つのみ作成可能)
対象はこのワークグループで実行される各クエリ全てです。
デフォルトでは1000 TBの制限がかかっています。
ワークグループデータの使用状況アラート
Setting data usage control limits - Amazon Athena
ワークグループ単位で、特定の期間のデータのスキャン量制限をすることが出来ます。
スキャンされるデータについて、時間単位または日単位の集計に複数の制限しきい値を設定できます。
しきい値を超えた場合、次のいずれかのアクションを実行することができます。
- 1.Athena コンソールで Amazon SNS アラームとアクションを設定し、制限を超えたときに特定のユーザーに通知
- 2.Amazon SNS アラームを利用してLambda 関数を呼び出す
- 3.ワークグループを無効にして、しきい値超過以降のクエリが実行されないようにしする
おわり
以上、Athenaのワークグループについて設定内容と機能をざっくり説明しました。
ユースケースとしては、簡単に以下などで考えられるかと思います。
- DB/利用部署ごとにワークグループをわける
- 「保存したクエリ」にサンプルクエリを保存し、定期実行クエリを保管しておく
DBに接続するユーザを分けることが出来ますし、頻繁に利用するコマンドは保存しておけば運用効率も上がるのではないでしょうか。
尚、ワークグループを利用したアクセス制御も可能ですので、別記事でまとめようと思います。
最後までご覧いただきありがとうございました!