Amazon QuickSight からRDSに接続してみた
はじめに
QuickSightを使ってRDSに溜まったデータを分析したいという話があったので、接続設定をしてみました。
RDSはデータベースなので通常はセキュリティ的に厳しい場所にあります。ですので、QuickSightからの接続もネットワークやセキュリティの設定が必要になり、「同じAWS同士だから簡単に接続できる」と言えるほどシンプルではなかったので記録に残しておきます。
やったこと
AWSドキュメントを参考に設定してみた
まずは、開発環境でこちらのドキュメントを参考に設定してみました。 日本語版は日本語が崩壊しているので英語版を貼っておきます。(最近のAWSドキュメントの日本語訳の崩壊は何とかならないの?)
手順通りやることで繋がりはしたのですが、私としては本番に適用するには2点ほど不安を感じました。
- 本番のDBの設定変更が必要なのが怖い。
- DBに対するセキュリティグループの設定で、(東京リージョンの)クイックサイト全てからのアクセス許可が付くのは怖い。
ということで、もしかしたら実際には大丈夫なのかもしれないけど普通に怖かったのでちょっと改変して設定をすることにしました。
実際に設定した構成と手順
構成
下図のような構成でQuickSightからRDSにアクセス出来るようにしました。

構成自体は前述のドキュメント通りに設定したときと同じですが、セキュリティグループの設定を少し変更しています。
手順
RDS側の設定
RDSのコンソールから、接続したいRDSのインスタンスのあるVPCを確認しておきます。
ついでにポートも確認しておきます

VPCのコンソールからセキュリティグループを作ります。名前は何でもいいですがこの記事ではAWSのドキュメントに従ってAmazon-QuickSight-accessとします。

作ったセキュリティグループに以下のインバウンドルールを設定します。
- プロトコル : TCP
- ポート : RDSのポート
- ソース : QuickSightのCIDR。東京リージョンは
13.113.244.32/27- 東京リージョン以外はこちらを参照

RDSのセキュリティグループの設定に飛びます。

RDSのセキュリティグループのインバウンドルールに、先程作ったAmazon-QuickSight-accessからのアクセス許可を追加します。

QuickSiteからVPCへ接続
QuickSiteのコンソールに移動します。画面右上のメニュからQuickSiteを管理を選びます

VPC 接続の管理を選択してVPC 接続の追加を押下。
各種設定を以下のように設定していきます。
- VPC 接続名
- 好きな名前
- VPC ID
- RDSのインスタンスのあるVPC
- 実行ロール
- aws-quicksight-service-role-v0
- サブネット
- RDSのインスタンスがあるサブネット
- セキュリティグループ ID
- 先ほど作成した
Amazon-QuickSight-accessのID
- 先ほど作成した

(参考:RDSのコンソールのここを見よう)

しかし、この状態で追加を押下すると失敗します。権限が足りていないためです。
IAMのコンソールに行き、ロールの画面からaws-quicksight-service-role-v0を探してください。

aws-quicksight-service-role-v0に以下のポリシーを追加します
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:DeleteNetworkInterface",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups"
],
"Resource": "*"
}
]
}
その後、VPC 接続の追加を実行すれば、無事にVPCへ接続出来るはずです。
QuickSiteからRDSへ接続
ここまでくれば特筆すべき点はないので簡単に記載します。
QuickSiteのコンソールからデータソースを追加します。RDSを選んで必要な項目を埋めてください。

以上の手順で、無事にRDBのデータをQuickSiteから取得することが出来ました。

最後に
QuickSiteを使う人って基本的にインフラ詳しくないと思うんですよね。その割にAWSのドキュメントがわかりにくすぎるのでは?と思いました。
DBでセキュリティが重要なので手順が多少複雑になるのは理解できるのですが、もうちょっとドキュメントを改善してくれると助かるなぁと思いました。
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion