関連する投稿を行いました。
QuickSightでRDSやRedshiftなどのVPC内のリソースに接続するには、ネットワーク疎通のための設定が必要です。参考ドキュメント
ネットワーク設定をCDKを使ってやってみました。
手順
1. VPCを作成
まずはVPCを作成します。
const vpc = new ec2.Vpc(this, 'vpc')
2. Auroraを作成
次にAuroraを作成します。
クエリエディタを使用したかったので、Aurora Serverless V1を選択しています。
認証情報はSecrets Managerに保存されます。
const aurora = new rds.ServerlessCluster(this, 'aurora', {
engine: rds.DatabaseClusterEngine.auroraPostgres({
version: rds.AuroraPostgresEngineVersion.VER_11_18,
}),
defaultDatabaseName: defaultDatabaseName,
vpc: vpc,
enableDataApi: true
})
3. セキュリティグループの設定
Aurora用のセキュリティグループにルールを追加し、QuickSightが作成するENI用のセキュリティグループを新規作成します。
-
Auroraのセキュリティグループ
- インバウンドルール
タイプ プロトコル ポート範囲 ソース PostgreSQL TCP 5432 QuickSight ENI用のセキュリティグループ - アウトバウンドルール
タイプ プロトコル ポート範囲 ソース すべてのトラフィック すべて すべて 0.0.0.0/0 -
QuickSight ENI用のセキュリティグループ
- インバウンドルール
タイプ プロトコル ポート範囲 ソース すべての TCP TCP 0 - 65535 Auroraのセキュリティグループ - アウトバウンドルール
タイプ プロトコル ポート範囲 ソース すべてのトラフィック すべて すべて 0.0.0.0/0
const auroraSgs = aurora.connections.securityGroups
const quichsightSg = new ec2.SecurityGroup(this, 'quicksight-sg', {
vpc: vpc,
})
auroraSgs.forEach((auroraSg) => {
quichsightSg.addIngressRule(auroraSg, ec2.Port.allTcp())
quichsightSg.addEgressRule(auroraSg, aurora.connections.defaultPort!)
auroraSg.addIngressRule(quichsightSg, aurora.connections.defaultPort!)
})
以上で、ネットワーク設定は完了です。
データの登録
QuickSightで可視化するためのデータを、Auroraに登録します。Aurora Serverless V1の場合は、マネジメントコンソールのクエリエディタから登録できます。
1. テーブル作成
CREATE TABLE quicksight_table (
group_name VARCHAR,
recorded_at TIMESTAMP,
sensor_name VARCHAR,
sensor_value DOUBLE PRECISION
)
2. データ登録
INSERT INTO quicksight_table (group_name, recorded_at, sensor_name, sensor_value)
VALUES
('group1', '2023-03-25 10:00:00', 'sensor1', 10.5),
('group1', '2023-03-25 10:01:00', 'sensor2', 10.7),
('group2', '2023-03-25 10:00:00', 'sensor1', 8.5),
('group2', '2023-03-25 10:01:00', 'sensor3', 8.7),
('group3', '2023-03-25 10:00:00', 'sensor1', 15.3),
('group1', '2023-03-25 10:02:00', 'sensor1', 11.2),
('group1', '2023-03-25 10:03:00', 'sensor4', 10.9),
('group2', '2023-03-25 10:02:00', 'sensor1', 9.1),
('group2', '2023-03-25 10:03:00', 'sensor1', 8.9),
('group3', '2023-03-25 10:01:00', 'sensor5', 14.9),
('group1', '2023-03-25 10:04:00', 'sensor1', 10.3),
('group1', '2023-03-25 10:05:00', 'sensor1', 11.1),
('group2', '2023-03-25 10:04:00', 'sensor3', 9.3),
('group2', '2023-03-25 10:05:00', 'sensor1', 8.6),
('group3', '2023-03-25 10:02:00', 'sensor1', 15.6),
('group1', '2023-03-25 10:06:00', 'sensor2', 10.8),
('group1', '2023-03-25 10:07:00', 'sensor1', 11.2),
('group2', '2023-03-25 10:06:00', 'sensor2', 9.4),
('group2', '2023-03-25 10:07:00', 'sensor1', 8.8),
('group3', '2023-03-25 10:03:00', 'sensor1', 15.1)
上位5件だけ表示
group_name | recorded_at | sensor_name | sensor_value |
---|---|---|---|
group1 | 2023-03-25 10:00:00 | sensor1 | 10.5 |
group1 | 2023-03-25 10:01:00 | sensor1 | 10.7 |
group2 | 2023-03-25 10:00:00 | sensor1 | 8.5 |
group2 | 2023-03-25 10:01:00 | sensor1 | 8.7 |
group3 | 2023-03-25 10:00:00 | sensor1 | 15.3 |
QuickSightの作成と設定
1. QuickSightを作成
QuickSightはCDKでは作成できないのでマネジメントコンソールで作成します。
2. QuickSightのVPC接続設定
先程作成したVPCの情報を入力します。ENIが作成されます。
3. QuickSightのデータセットを追加
最終構成図
最終的にはこのような構成となります。QuickSightはCDKやCloudFormationで作成できないので手動での作成です。