Private VPC内のRDSにQuicksightを接続する
プライベートVPCのRDSデータベースからデータを引き出すために、AWS Quicksightを接続したい場合があります。これはそう頻繁には行わない作業で、他のAWSサービスとは少し異なるので、私は毎回やり方を学び直さなければなりませんでした。そこで今回は、後世のために私が学んだ方法を共有します。
Quicksightは公開IP経由でアクセスできるデータベースに自動で接続できます。DBがインターネットに公開されていれば(もちろんセキュリティグループでのフィルタリングはありますが)、この記事は無視しても構いません。
もしDBに公開IPアドレスはあるけれども、ポリシー、技術的、または歴史的な理由からインターネットには実際にはアクセスできないという奇妙なケースに該当する場合は、読み進めてください。
VPC Connection
要件
Quicksight Quicksightでは、QuicksightのインスタンスとあなたのVPCの間にコネクションを作成するオプションがあります。これは、ターゲットVPCの指定したサブネットにネットワークインターフェースを注入することで行います。
VPC ID
ターゲットDBがあるVPC- ルート可能な
Subnet
ターゲットDBのサブネット - Quicksightコネクション専用の
Security Group
TCPトラフィック全てをターゲットDBへ許可 - オプションで
DNS Inbound Endpoint
ターゲットDBとそのVPCは既に存在しているものと仮定します。
既存のSubnet
を使うこともできますが、VPC内と同じVPCにあるサブネットで、ターゲットDBのサブネットにルーティングできる必要があります。
Quicksight管理コンソールでVPC Connection
を作成すると、指定されたSubnet
にNetwork Interface
が自動作成され、指定されたSecurity Group
に関連付けられます。
Security Group
はステートレスです。Quicksightリクエストからくる返信パケットはランダムに割り当てられたポート番号を持ちます。通常セキュリティグループはステートフルでポートを自動処理しますが、Quicksightネットワークインターフェースの場合は、受信が任意のポートで許可されるように明示的に設定する必要があります。
オプションのDNS Inbound Endpoint
は、Quicksightに対し、Public DNSゾーンの問い合わせだけでなく、VPCのプライベートDNSリゾルバーを使うように指示します。これは、ターゲットDBがPublic IPアドレスを持つ場合に必要です。この設定なしでQuicksightがDBのEndpoint name
を問い合わせると、Public IPアドレスが返されます。接続が動作しない理由に頭を悩ませることになります。
DNS Inbound Endpoint
を使用する場合は、Route53
で設定する必要があります。
これらの詳細な手順は以下で説明されます。
VPC Connection
は以下のVPC内のものに接続可能です:
- Amazon OpenSearch Service
- Amazon Redshift
- Amazon Relational Database Service
- Amazon Aurora
- MariaDB
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- Presto
- Snowflake
VPC Connection
は、あなたのQuicksightアカウント内のリージョンのデータソースに再利用ができます。
サブネット情報
VPC情報取得
ここで「VPC ID」と「CIDRブロック」が必要です。
RDSの設定で、どのVPCにあるかを見ることができます。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/aws-builders/connect-quicksight-to-rds-in-a-private-vpc-4nl9