QuickSightのデータソースにプライベートサブネットにあるRDS(MySQL) リードレプリカを設定してみた

QuickSightとRDS リードレプリカを接続してみました
2023.11.01

こんにちは、洲崎です。
QuickSightのデータソースにRDS(MySQL)のリードレプリカを設定する機会があったので紹介します。

VPC接続はQuickSightのEnterprise Editionで利用可能です。

構成

今回の構成はこちらです。

プライベートサブネットにあるRDS リードレプリカに対して、新規でセキュリティグループと各AZにENI(QuickSight側で自動作成)を作成し、QuickSightと接続します。

やってみる

RDS(準備)

RDSはプライマリ(マルチAZ)とリードレプリカで構築しました。
プライベートサブネットは各AZ(今回はap-northeast-1aap-northeast-1c)で用意します。

セキュリティグループはリードレプリカにアタッチしているもの(read-replica-20231101)を利用します。

QuickSight側のセキュリティグループ作成

QuickSight用のセキュリティグループを作成します。(名前はquicksight-sg-20231101で作成しました)

作成したセキュリティグループに対して、RDS リードレプリカにアタッチしているセキュリティグループ(read-replica-20231101)をソースで指定して、インバウンドルールをすべてのトラフィックで許可します。

RDS リードレプリカ側のセキュリティグループ

QuickSight用のENIにアタッチされているセキュリティグループの通信はステートフルではなくなるという仕様があるため、リードレプリカ側のセキュリティグループ(read-replica-20231101)にも、quicksight-sg-20231101からのインバウンド通信を許可します。

IAMポリシーの作成

QuickSightがVPC接続を行うにあたってのIAMポリシーを作成します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}


(こちらの記事を参考にしました)

作成したIAMポリシーをQuickSightのVPC接続で利用する際のIAMロールにアタッチします。
(今回は検証のため、すでにあるQuickSightのaws-quicksight-service-role-v0にアタッチして利用しましたが、本来であれば別で用意するのが好ましいです)

QuickSight VPC接続

QuickSightの管理画面にいき、「VPC接続の管理」をクリックします。

以下の情報を入力します。

  • VPC接続名:任意の名前
  • VPC ID:RDSがあるVPC ID
  • 実行ロール:作成したIAMポリシーをアタッチしているIAMロール
  • サブネット:RDSが置かれているプライベートサブネット(2つ以上の異なるAZのサブネットが必要)
  • セキュリティグループID:QuickSight用に新規で作成したセキュリティグループ ID


実行したら、設定したセキュリティグループで、各AZにENIが作成されます。
ステータスがCREATINGからAVAILABLEになることを確認します。

QuickSightのデータセットから、「データセットの作成」でRDSを選択します。

以下の情報を入力し、左下の「接続を検証」ボタンをクリックし、「検証済み」になることを確認します。

  • データソース名:任意の名前
  • インスタンスID:RDS リードレプリカのインスタンスIDをプルダウンで指定
  • 接続タイプ:QuickSight VPC接続で作成した名前を指定
  • データベース名:RDSのデータベース名(接続タイプを入れたら自動で保管される)
  • ユーザー名:RDSのユーザー名
  • パスワード:RDSのパスワード


以上で、QuickSightとRDS リードレプリカとの接続は完了です。

最後に

QuickSightとRDS(MySQL)リードレプリカを接続してみました。
セキュリティグループ(ENI)を別途作成すれば、プライベートサブネットにあるRDSも問題なくQuickSightのデータソースとして利用可能です。
RDSのデータをQuickSightで可視化してみたい方がいましたら参考にしてみてください。

ではまた!コンサルティング部の洲崎でした。

参考