RedashからAmazon Athenaのクエリを実行できるようにする

こんにちは。データサイエンティスト兼、データ基盤エンジニアのshobyです。

今回は、S3に存在する生ログファイルの分析に便利なAmazon AthenaをRedashと連携する方法をご紹介します。

RedashとAthenaを連携し、生ログファイルを検証するクエリを問題に備えて登録しておくことで、 問題発生時の原因究明を素早く行うことができるようになります。

Amazon Athenaについてはこちらの記事をご参照ください。

tech.tvisioninsights.co.jp

※この記事ではOpen Source版のRedashをSelf Hostedで管理している場合を想定しています。

概要

  • Redashのアップグレード
  • IAMポリシーの作成
  • IAMユーザーの作成
  • DataSourceの追加
  • TVISION INSIGHTSでの活用事例

Redashのアップグレード

Amazon Athenaが有効になったのはRedash 2.0.0以降なため、1.x系を使用している場合には、アップグレードをする必要があります。

1.x系の場合は、以下のコマンドでアップグレードができます。

cd /opt/redash/current
sudo bin/upgrade

また、現状のアップグレード用scriptではPyAthena等の追加ライブラリがインストールされないため、*1 アップグレード前のバージョンによってはDataSource一覧にAthenaが表示されない場合があります。

その場合は、手動でpipコマンドを実行後、Redashを再起動する必要があります。

cd /opt/redash/current
sudo pip install -r requirements_all_ds.txt
sudo supervisorctl restart all

DataSource一覧にAmazon Athenaが表示されればOKです。

f:id:shoby:20180607191823p:plain

IAMポリシーの作成

以下のガイドに従って、セットアップを進めます。まず、IAMポリシーを作成します。

Amazon Athena Setup | Redash

以下のようなポリシーの作成が必要です。

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": ["s3:GetObject"],
        "Resource": ["arn:aws:s3:::my-bucket/*"]
    }, {
        "Effect": "Allow",
        "Action": ["s3:GetBucketLocation", "s3:ListBucket"],
        "Resource": ["arn:aws:s3:::my-bucket"]
    }]
}

注意点として、ここで指定するバケット名は、Athenaのクエリ結果を保存するaws-athena-query-results-*ではなく、 Athenaが読み込む元データが保存されているバケット名である必要があります。

もし、複数のバケットを元データとして参照したい場合は、それらを全て指定したポリシーを指定する必要があります。((権限管理上問題なければ、AWSのデフォルトのポリシーである AmazonS3ReadOnlyAccess を使って代用することもできます))

IAMユーザーの作成

作成したカスタムポリシーと AWSQuicksightAthenaAccess を付与したユーザーを作成します。

詳細はセットアップガイドを参照ください。

DataSourceの追加

あとはRedashの管理画面上から、作成したユーザーのAccessKeyとSecretKeyを設定し、必要な情報を埋めるだけです。

AthenaをGlueと連携し、S3からデータを取得している場合は、Use Glue Data Catalogにチェックを入れる必要があります。

f:id:shoby:20180607192308p:plain

設定が完了したら、実際にクエリを書いて動作すれば完了です!

TVISION INSIGHTSでの活用事例

TVISION INSIGHTSでは、RedashのAthena連携機能を活用し、問題発生時の原因究明に役立てています。

S3に保存された生ログの検証クエリを事前にRedashへ登録しておくことで、 ログデータの欠損値や異常値を知らせるAlertが上がった場合、 Redash経由で素早く原因究明が行うことができるようになりました。

Redashを用いたデータの監視についてはこちらの記事をご参照ください。

tech.tvisioninsights.co.jp

まとめ

RedashはDataSourceとしてAmazon Athenaを連携することができます。

RedashとAmazon Athenaを連携することにより、 S3上の生データの検証クエリを事前に登録しておき、 問題発生時に活用することで、データに問題が起きた際に素早く原因特定を行うことができるようになります。

*1:2018-06-07現在