LoginSignup
9
10

More than 3 years have passed since last update.

RedashをAWS(EC2+RDS)で試してみた

Posted at

こんにちは、@0yanです。
最近、課内で「戦略人事の実現のため、カオナビから別サービスに切り替えよう」という話が出始め、
- タレントパレット
- HRMOS CORE
- ヒトマワリ
などを比較検討しています。

そんな折、OSSのBIツール「Redash」の存在を知ったので試してみました。

前提条件

  • Windows 10 homeを使用
  • AWSアカウント登録済み
  • TeraTermインストール済み

手順

  1. EC2インスタンスを作成(Redash AMIを使用)
  2. RDSにMySQLデータベースを作成
  3. TeraTermでEC2に接続し、CSVを転送
  4. EC2にMySQLクライアントをインストールし、RDSのMySQLデータベースに接続
  5. データベースとテーブルを作成し、CSVを取り込み
  6. Redashにデータベースを接続
  7. Redashにクエリを作成し、ダッシュボードで表示

1. EC2インスタンスを作成(Redash AMIを使用)

①AWSマネジメントコンソールからEC2を検索、EC2ダッシュボードのサイドバーからインスタンスを選択します。
image.png

②「インスタンスの作成」をクリックし、ステップ1: Amazon マシンイメージ(AMI)でコミュニティAMIを選択します。
image.png

Setting up a Redash Instanceで、Redashが作成したAWS用RedashインスタンスのAMIを調べます(今回は東京リージョンを選択しました)。
image.png

④②の検索ボックスに③で調べたAMIを入れて検索し、選択ボタンをクリックします。
image.png

⑤ステップ2: インスタンスタイプの選択でt2.smallを選択し、確認と作成をクリックします。
image.png

なお、下記のとおり、t2.microでは動きません(最低でもt2.smallを選択する必要があります)のでご注意ください。

Launch the instance with the pre-baked AMI we create (for small deployments t2.small should be enough):

事前に作成したAMIを作成してインスタンスを起動します(小規模な展開の場合はt2.smallで十分です)。

引用: Setting up a Redash Instance

⑥ステップ7: インスタンス作成の確認でセキュリティグループの編集をクリックします。
image.png

⑦下記のとおり、SSHに加えてHTTPとHTTPSを許可する必要があるため、ステップ6: セキュリティグループの設定で追加し、確認と作成をクリックします。
image.png

When launching the instance make sure to use a Security Group, that only allows incoming traffic on ports: 22 (SSH), 80 (HTTP) and 443 (HTTPS). These AMIs are based on Ubuntu so you will need to use the user ubuntu when connecting to the instance via SSH.

インスタンスを起動するときは、ポート(22(SSH)、80(HTTP)、および443(HTTPS))でのみ着信トラフィックを許可するセキュリティグループを使用してください。これらのAMIはUbuntuに基づいているため、SSHを介してインスタンスに接続する場合は、ユーザーubuntuを使用する必要があります。

引用:Setting up a Redash Instance

なお、IP制御をする必要がある場合はソースのCIDRを適時変更してください。

⑧ステップ7: インスタンス作成の確認の最下部にある起動をクリックし、ポップアップで「既存のキーペアの選択」または「新しいキーペアの作成」のどちらかを選択した後、インスタンスの作成をクリックします。
image.png

以上でEC2インスタンスの作成は終了です。

2. RDSにMySQLデータベースを作成

①EC2ダッシュボードのサイドバーからセキュリティグループを選択、作成したEC2のセキュリティグループのグループID(sg-から始まるID)をコピーします。
image.png

②同ページ内のセキュリティグループの作成をクリックし、下図のとおりに設定後、作成をクリックします。
image.png

ポイントはソースに①でコピーしたグループIDを入れることです(このセキュリティグループは、EC2インスタンスがRDSに作成するMySQLデータベースにアクセスできるようにするために作成しております)。

③RDSのページに遷移し、下部にあるデータベースの作成をクリックします。
image.png

④データベースの作成ページで、下表のとおりに設定をします(記載のないものはデフォルト設定です)。

項目 内容
データベース作成方法を選択 簡単作成
エンジンのタイプ MySQL
DBインスタンスサイズ 無料利用枠
マスターパスワード 任意のパスワード

⑤データベース作成完了後、RDS>データベース>④で作成したデータベース名を選択し、変更をクリックします。
image.png

⑥セキュリティグループを②で作成したものに変更し、次へをクリックした後、DBインスタンスの変更をクリックします。
image.png

以上でRDSでのMySQLデータベースの作成は終了です。

3. TeraTermでEC2に接続し、CSVを転送

①EC2インスタンスのIPv4パブリックIPをコピーします。
image.png

②TeraTermを起動し、ホストに①でコピーしたIPv4パブリックIPをペーストしてOKをクリックします。
image.png

③ユーザー名に「ubuntu」、パスワードは空白のまま、秘密鍵にEC2インスタンスの鍵ペア生成時にダウンロードしたpemファイルを選択してOKをクリックします。
image.png

【補足】
TeraTermでログインする際のユーザー名はOSによって異なります。

OS ユーザー名
Amazon Linux ec2-user
Ubuntu ubuntu
CentOS centos

Redash AMIはUbuntuベースのため、ユーザー名が「Ubuntu」となっております。ご注意ください。

④CSVを格納するフォルダを作成します。

$ pwd
/home/ubuntu
$ mkdir csv
$ cd csv
~/csv$ pwd
/home/ubuntu/csv

⑤以下の記事に従い、データベースに取り込みたいCSVファイルをEC2インスタンスのCSVフォルダに転送します。

TeraTermで効率良くファイル転送

⑥CSVフォルダに転送できたか確認します。

~/csv$ pwd
/home/ubuntu/csv
~/csv$ ls
student.csv

以上でEC2インスタンスへのCSVファイルの転送は終了です。

4. EC2にMySQLクライアントをインストールし、RDSのMySQLデータベースに接続

sudo apt install mysql-client-core-5.7コマンドでMySQLクライアントをEC2インスタンスにインストールします。

②RDSに作成したMySQLデータベースのエンドポイントをコピーします。
image.png

③以下のコマンドでMySQLデータベースに接続します。

$ mysql -h RDSエンドポイント -P 3306 -u admin -p
Enter password: マスターパスワード

以上でMySQLデータベースへの接続ができました。

5. データベースとテーブルを作成し、CSVを取り込み

①以下のコマンドでデータベース及びテーブルを作成します。なお、今回、データベース名はexample_db、テーブル名はstudentとしました。

mysql> create database example_db;
mysql> show databases;
mysql> use example_db;
mysql> create table student (
  列名 データ型,
  ・・・
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

なお、列名に丸かっこなどの記号が入っている際、MySQLではバッククォート「`」で囲みます。

SQL文のテーブルもしくは列名に[]をつけるのはどういう意味か

②以下のコマンドでCSVフォルダに転送したCSVファイルをMySQLデータベースに取り込みます。

mysql> load data local infile "/home/ubuntu/csv/student.csv" into table student fields terminated by ',';

なお、CSV取り込みについては以下の記事を参考にさせて頂きました。

【MySQL】CSVファイルをデータベースにインポートする

以上でRedashを使う準備がすべて終了しました。

6. Redashにデータベースを接続

①EC2インスタンスのIPv4パブリックIPをブラウザに入力し、Redashを起動します。

②起動すると、下図のとおり、Adminユーザー登録画面になるので登録します。
image.png

③ログインすると下図のような画面になるのでConnect a Data Sourceをクリックします。
image.png

④データソースの中からMySQL(RDS)を選択します。
image.png

⑤下図のとおり、入力を求められますので、下表に従い入力します。
image.png

image.png

項目 入力内容
Name データソース名(任意)
Host RDSのエンドポイント
User admin
Password RDSで設定したマスターパスワード
Database name example_db

Createをクリック後、Test Connectionをクリックします。「Success」と表示されればRedashとデータベースの接続成功です。

7. Redashにクエリを作成し、ダッシュボードで表示

力尽きました・・・(苦笑)
以下の記事が詳しいのでご覧くださいませ。

re:dash でグラフを作成してみる

さいごに

実は今までHeroku+PostgreSQLばかり触っていたので、AWSとMySQL自体、触るのが初めてでした。
なので備忘録も兼ねてAWSとMySQLの操作についても細かく記載しました。
「この記事長いな」と思われた方、すみませんでしたm(_ _)m

今回、Redashを試してみて「こんなに便利なもんがOSSで良いのか!」と感動しました。
非エンジニアの人事課メンバーにはRedashでもハードルは高い(SQLにすら抵抗がある)ので、タレントパレット・HRMOS CORE・ヒトマワリのどれかを入れることになるんだろうな~と思いますが、経営企画の方が安価なBIツールを探していたので、これを紹介したら喜びそうだなと感じました(ので教えようと思います)。

本記事をご覧くださった方、長文にも関わらずご覧頂きありがとうございました。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10