こんにちは。リンクアンドモチベーション SRE グループの綿引と申します。
今回はRedashから別AWSアカウントのDBに対してアクセスできない際に確認するポイントをご紹介したいと思います。
ただ以下の背景の関係上 「Redashサーバが存在するAWSアカウントと参照したいDBが存在するAWSアカウントは VPCピアリングで接続されている 」 という前提で進めさせて頂きますので、その点はご容赦頂ければと思います。
背景
先日 「ある AWS アカウントの Redash から、別アカウントの Aurora に対しアクセスを可能にしたい」 という話があったので対応したのですが、このナレッジを残しておきたいと思ったことが背景となります。
尚、構成に関して次項に記載しているのですが、本記事を見て頂いている方の担当システムで全く同一の構成というケースは少ないかとは思いますのでご参考程度に見て頂ければと思います。
構成
構成について以下のような形です。

AWSアカウントAとBはVPCピアリングで接続しており、Redashに関しては EC2のdocker上に構築していているという構成です。
確認ポイント
1. ルートテーブル
まずはVPCピアリング内で使用されているルートテーブルです。
特にVPCピアリング設定直後になると思いますが、指定した各VPCのサブネットに紐付いているルートテーブルも設定変更が必要になるケースが多いと思うので設定が漏れていないか確認しましょう。

2. セキュリティグループ
次はセキュリティグループです。
DBに付与されているセキュリティグループに接続元のIPが追加されているか確認しましょう。
今回の構成だとRedashがインストールされているEC2のIPがAurora側で許可されているかとなります。

3. DBユーザ
続いてはDBユーザです。
今回は Aurora を使用しておりますが、RDS for MySQL も同様です。
データベース側のユーザでIP制限などを掛けている場合、Aurora 側で user と host を許可していなければならないため、接続可能な状態なのか設定を確認しましょう。
select user,host from mysql.user;
+------------------+-------------+
| user | host |
+------------------+-------------+
| root | % |
| mysql.sys | localhost |
| test | 172.30.0.% | ← user,host が許可されているか(IPは適当です)
+------------------+-------------+
Redashから接続確認
最後に Redash データソースの設定で「Test Connection」を押下し「Success」と表示されればOKです。

もしエラーとなった場合は、データソース側でもユーザ名やパスワード、データベース名なども間違いないことを確認しましょう。
最後に
今回は発生した事象ベースにまとめた記事のため「RedashからDBに繋がらない時に確認するポイント」とさせて頂きましたが、記事の内容的にRedashを使用していなくても「別アカウントのDBに接続できない時に確認するポイント」として使えるなと思いました。
もしDB作成したけど繋がらないな〜という事象が発生したら本記事を思い出していただけますと幸いです。