Amazon EventBridgeでS3に格納したAuth0のイベントログをAmazon Athenaで検索する #reinvent #Auth0JP #Auth0アドカレ

Amazon EventBridgeとAuth0が連携できるようになりました!S3に格納してあるAuth0のイベントログをAmazon Athenaで検索するための手順を解説します。
2019.12.13

Amazon EventBridgeとAuth0が連携!

re:Invent 2019の期間中、Amazon EventBridgeにアップデートがあり Auth0との連携がサポートされました! 現在はBETAリリースとなっています。

以下の記事では、Amazon EventBridgeとAuth0を連携し「Auth0のイベントログをS3に格納する」という機能を試してみました。

Amazon EventBridgeとAuth0を連携!S3にイベントログを格納する #reinvent #Auth0JP #Auth0アドカレ

本記事ではその発展形として、S3に格納してあるイベントログをAmazon Athenaを使って検索してみました。

AWS Glueを使ってテーブルを作成する

まず、検索をかける先となるデータベースおよびテーブルを、AWS Glueを使って作成します。

AWS Glueには Crawler という機能があり、この機能を使うと実際に保存されているイベントログをクロールし、その情報からテーブル定義を自動で作成することができます。便利です。

まずは以下にアクセスし、Crawlerを作ります。

まず適当に名前を付けます。

Specify crawler source type は元とするデータの場所の種類を決めます。今回はS3に格納済みのログデータを使いたいので Data stores を選びます。

Choose a data sourceS3 を選びます。Include path はS3のバケット名を指定します。

Add another data sourceNo を選びます。

IAM Roleは新規に作成します。S3バケットのオブジェクトに対する読み取りアクセスが許可されます。

Create a schedule for this crawler は、任意のタイミングで定期的にクロールするための設定です。今回はとりあえず一度だけで良いので Run on demand にします。

DatabaseAdd database を選び、データベースを追加します。

Configuration Options は重要で、こちらの設定を正しく行わないとAmazon Athenaでクエリができません。When the crawler detects schema changes in the data store, how should AWS Glue handle table updates in the data catalog?Add new columns only. にします。また、Update all new and existing partitions with metadata from the table. にチェックを入れます。理由としては、Auth0のイベントログデータにおいて、存在するカラム、存在しないカラムが場合により出てくるためです。

これで完成です。Run crawler をクリックし、一度実行しておきます。

Amazon Athenaでクエリをかける

次に、以下にアクセスしQuery Editorを使ってみましょう。

Tables に、先ほどGlue経由で作成したTableがあると思います。メニューを開き Preview table を選びましょう。

以下のクエリが投げられます。

SELECT * FROM "auth0eventlogs"."auth0_event_logs" limit 10;

イベントログがヒットしました。

少し条件を変えてみます。時間で絞り込んでみました。

SELECT * FROM auth0eventlogs.auth0_event_logs where time > '2019-12-12T16:00' limit 10;

対象のログのみがヒットします。

格納するだけではなく、いざという時にパワフルに検索しよう

S3とAthenaを組み合わせることによって、Auth0のイベントログが柔軟に検索できるようになりました。Athenahはクエリ課金ですので、使わない場合は低コスト、使う場合は使った分だけのコストという形で利用できます。ログインの履歴を調べる際など、様々な場面で役に立つと思いますのでぜひ参考にしてください。