QuickSight のデータセットの作成と接続方法

AWSクラウド

QuickSight とは、AWS が提供する BI【Business Intelligence】サービスで、データの集計結果をグラフ等を利用して可視化し、分析やインサイトの抽出に役立てることができます。
QuickSight はデータベースやデータウェアハウス、スプレッドシートなど様々なデータソースに接続することができ、ノーコードでダッシュボードやレポートを作成することが可能です。
ここでは、QuickSight のダッシュボードの作成に際して、データセットの作成と接続方法について解説いたします。


ダッシュボードの構成
QuickSight のダッシュボードは以下のような構成で成り立っています。

ダッシュボードの構成

データソース【Data Source】
ダッシュボードに表示するデータが物理的に格納されている場所やサービス。
データベースやデータウェアハウスのほか、CSV ファイルや S3 ストレージなども指定可能です。
データソースはデータセットとともに作成され、ソースの種別とデータセットとの接続方法を定義します。

データセット【Data Set】
データソースから取得したデータの集合。
どのようなデータを取得するかを定義します。
データベースの場合だと、テーブルやビューの結合をビジュアルエディタで視覚的に定義できたり、直接 SQL を指定することもできます。
またフィルタリングやカラム同士の計算、合計・平均などの集計、ソートなども設定できます。

分析【Analysis】
データセットを利用してグラフやチャート、表などの形でデータの集計結果を可視化します。
グラフ軸の設定やビジュアルの配置、テーマ(カラー)を定義します。
ここでもデータセットと同様にフィルタリングや計算フィールドの設定が可能です。
またプルダウンなどのコントロールに紐づくアクションやドリルダウンを設定することもできます。

ダッシュボード【Dashboard】
分析で設定したビジュアルを表示する画面です。
設定されたコントロールを操作して表示内容を切り替えたり、グラフをクリックしてドリルダウンを行うことが可能です。

データセットの作成
ダッシュボードの作成にあたり、まず初めに行うことはデータセットの作成です。
左メニューの「データセット」をクリックし、右上の「新しいデータセット」ボタンをクリックするとデータソースの一覧が表示されます。

データソースの一覧

該当するデータソースを選択すると、データソースへの接続設定が表示されます。
通常、接続先としてデータベースサーバのホスト名や IP アドレスを直接指定しますが、RDS や Aurora、Redshift のような AWS のサービスの場合は自動検出の機構があり、また SSL 接続もサポートされているため比較的設定が楽になります。
以下は RDS を選択した場合の接続設定の画面です。
RDS の接続先はインスタンス ID から選択できるようになっています。

新規RDSデータソース

Aurora の場合はデータベースサーバにエンドポイント名を指定します。
リーダーインスタンスが存在する場合は、リーダータイプのクラスターエンドポイントを指定する形が良いかと思います。
エンドポイント名は AWS マネジメントコンソールで確認できます。

クラスターエンドポイント

データソースの作成・編集は少しわかりにくい UI をしていますので注意が必要です。

データソースの作成
データセットの作成とともに行われます。

データソースの編集・削除
「新しいデータセット」のデータソース選択画面より該当するデータソースをクリックし、「データソースの編集」や「データソースの削除」をクリックして行います。
作成済みのデータソースは、画面下部「既存データソースから」というタイトル以下にあります。

データソースの編集・削除


接続タイプの選択
データセットの作成時にデータソースとの接続方法を指定しますが、接続タイプについては大きく分けて2種類があります。

a) パブリックネットワーク
b) VPC 接続

それぞれ一長一短がありますが、データソースが AWS サービス(RDS、Auroraなど)の場合は b) が良いでしょう。
以下、それぞれの解説になります。


パブリックネットワーク
インターネットを経由してデータソースに接続します。
通信経路がパブリックなため、通信データを盗聴されないよう「SSL の有効化」にチェックを入れデータを暗号化する必要があります。
また、データベース側の設定として、QuickSight からのパブリックなアクセスを許可する必要があります。
2023/10/12 現在、QuickSight のアクセス IP アドレスは、日本リージョン(ap-northeast-1)では 13.113.244.32/27 となります。

AWSドキュメント – AWS リージョン、ウェブサイト、IP アドレス範囲、エンドポイント
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/regions.html

以下は QuickSight からのアクセス用に MySQL や MariaDB に dashboard というユーザーを設定する場合のコマンド例です。

>create user 'dashboard'@'13.113.244.32/27' identified by 'password';

# require sslを指定することによりSSL接続のみ受け付けるユーザーとなる
>grant select on *.* to 'dashboard'@'13.113.244.32/27' require ssl;

AWS のサービス(RDS、Aurora など)を利用する場合は、データベースのセキュリティグループのインバウンドルールに本 IP アドレスを設定します。

インバウンドルール


VPC 接続
VPC【Virtual Private Cloud】に接続することでプライベートなネットワークを経由してデータソースにアクセスすることができます。
通信がプライベートに閉じているので暗号化する必要がなく、性能的にもパブリック接続に比べてそれなりに優れているかと思います。
データソースに AWS のサービス(RDS、Aurora など)を利用している場合にのみ利用できます。
※パブリックアクセスを「あり」に設定しているとうまく接続できない場合があります。

QuickSight が VPC 内のデータソースにアクセスする際には、ENI【Elastic network interface】を通じて行います。
ENI は VPC 内に作成され、VPC 内のリソースと通信するための「エントリポイント」のような役割を果たします。

VPC接続

AWS ドキュメント – QuickSight Elastic Network Interface
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/vpc-qeni.html

QuickSight では ENI 用のセキュリティグループを作成し、これを QuickSight 側に設定することで ENI を生成します。
この ENIQuickSight ネットワークインターフェイス【QNI】と呼ばれ、VPC 接続の設定とともに自動的に生成されます。

セキュリティグループのルールは以下の通りです。

タイププロトコルポート範囲ソース
   すべてのTCP   TCP0-65535データソースのセキュリティグループ  
インバウンドルール
タイププロトコルポート範囲ソース
 すべてのトラフィック すべてすべて0.0.0.0/0              
アウトバウンドルール


AWS ドキュメント – セキュリティグループ: インバウンドルールとアウトバウンドルール
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/vpc-security-groups.html


VPC 接続を行うためには、まず QuickSight に VPC 接続設定を行う必要があります。
画面ヘッダ部の右上のユーザーアイコンより「QuickSight を管理」を選択し、左メニューの「VPC 接続の管理」をクリックします。
画面上部右上の「VPC 接続の追加」ボタンをクリックすると、VPC 設定の画面が表示されます。

VPC接続の追加

VPC 接続名
任意の接続名を入力します。

VPC ID
データソースが存在する VPC を選択します。

実行ロール
aws-quicksight-service-role-v0 というロールが存在するので、これを選択します。
本ロールはデフォルトでは ENI 操作関連のポリシーが足りませんので、あらかじめポリシーを追加しておきます。
ポリシーの追加は、新規にポリシーを定義してロールにアタッチするか、ロールにインラインポリシーを定義することで行います。
ちなみにインラインポリシーの作成は、マネジメントコンソールの IAM の画面左メニュー「ロール」より 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 内のサブネットが表示されますので、少なくとも2つのサブネットを選択します。

セキュリティグループ ID
前述の QNI 用に新規に作成したセキュリティグループを選択します。


各項目の内容はマネジメントコンソールの RDS の画面で該当のデータベースを選択、「接続とセキュリティ」タブより確認ができます。

RDSの接続とセキュリティ

AWS ドキュメント – QuickSight コンソールでの VPC 接続の設定
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/vpc-creating-a-connection-in-quicksight-console.html


追加」をクリックすると、VPC 接続設定が登録されます。
初めはステータスが UNAVAILABLE となっていますが、QNI の作成が完了すると AVAILABLE になります。

VPC接続の管理

VPC 接続名をクリックすると各サブネットの状況が確認できます。

ネットワークインターフェイスのリスト


次にデータベース側の設定として、QuickSight からのプライベートなアクセスを許可する必要があります。
VPC 内のプライベート IP アドレスは、マネジメントコンソールの VPC 画面の「CIDR」タブで確認できます。

VPCのCIDR


以下は QuickSight からのアクセス用に MySQL や MariaDB に dashboard というユーザーを設定する場合のコマンド例です。

>create user 'dashboard'@'172.31.0.0/16' identified by 'password';
>grant select on *.* to 'dashboard'@'172.31.0.0/16';

さらにデータベースのセキュリティグループのインバウンドルールに本 IP アドレスか、もしくは QNI 用に作成したセキュリティグループを設定します(セキュリティグループの方が推奨のようです)。

インバウンドルール

コメント