QuickSightのデータソースにプライベートサブネットのAuroraを設定する

2020.09.07

QuickSightのデータソースとして、プライベートサブネットにいるAuroraクラスターを定義する機会があったのでレポートします。

構成

プライベートサブネットにいるAuroraクラスターに、非VPCリソースであるQuickSightがどのようにアクセスするのでしょうか?

QuickSight用のENIを作成します。これによりQuickSightはVPCネットワーク内にアクセスができるようになるので、Auroraクラスターにもアクセスできるようになります。

通信要件

QuickSight - Auroraクラスター間の通信を可能にする必要があります。ポイントとなるリソースは2つ、両方ともセキュリティグループです。先程の図にセキュリティグループを書き足すと以下のようになります。わかりにくくて申し訳ありませんが、ENI、Auroraクラスター両方にセキュリティグループがアタッチされるので、そこで通信許可の設定をする必要があります。

QuickSight用ENIにアタッチするセキュリティグループ

  • Auroraクラスターへのアウトバウンドを許可する必要があります。許可ポートはAuroraにアクセスしにいく際に使うポートです。
  • 上記アウトバウンドの、戻りのインバウンドトラフィックについても許可が必要です。 通常は、セキュリティグループはステートフル、つまり戻りの通信は行きの通信が許可されている場合自動的に許可されるのが通常の挙動です。が、このQuickSight用ENIにアタッチするセキュリティグループはステートレスです。(こうなっている理由は不明です。。)
    使用するポートはアウトバウンドと同じではなく、Ephemeralポート(一時ポート)なので、許可するポートは全て(0–65535)にします。

Auroraクラスターにアタッチするセキュリティグループ

  • QuickSightからのインバウンドアクセスを許可する必要があります。前述のQuickSight用ENIにアタッチするセキュリティグループからの、Aurora許可ポートへのアクセス許可を追加しましょう。戻りの通信についてはステートフルなので追加する必要はありません。

やってみた

前提条件

  • Auroraインスタンスはプライベートサブネット上に作成済みとします。
  • Aurora MySQLを採用しました。リッスンしているポートはデフォルトの3306です。

1.QuickSight用ENIセキュリティグループの作成

  • アウトバウンドルールは、コンソールからセキュリティグループを作成するとデフォルトで全許可ルールが作成されています。ですが、Auroraへの3306ポートへのアクセスだけできれば良いので削除してもっと狭いルールを追加します。送信先にAuroraにアタッチしているセキュリティグループのIDを指定します。

  • インバウンドルールにも、ソースにAuroraにアタッチしているセキュリティグループのIDを指定します。タイプは「すべてのTCP」にして全ポート(0–65535)許可にします。

2.Auroraクラスターセキュリティグループルールの追加

上記QuickSight用ENIセキュリティグループからの3306ポートアクセスを許可します。 ※ 上2つのルールは こちらの構成のための設定です。

3.VPC接続定義を作成

QuickSightコンソールにアクセスし、右上の人シルエットマークから「QuickSightの管理」をクリックします。

左メニューから「VPC 接続の管理」をクリックし、「VPC接続の追加」をクリックします。

次のページで各項目を設定していきます。セキュリティグループIDでは先程作ったQuickSight用ENIセキュリティグループのものを指定しましょう。

4.データソース作成

QuickSightのトップ画面に戻ります。右上「新しい分析」クリック。左上「新しいデータセット」クリック。 データソース一覧からAuroraを選択します。

モーダルウインドウのフォームを埋めていきます。「接続タイプ」でパブリックネットワークではなく先ほど作成したVPC接続を選択しましょう。

ハマったポイント

「データソースへの接続に時間がかかっています。このリクエストを再試行することで解決できる場合があります。さらにサポートが必要な場合は、テクニカルサポートにお問い合わせください。」というエラー

最後の新規Auroraデータソースを作成するステップで末尾の作成ボタンを押すと上記エラーが表示されました。

私の環境の場合、これはAuroraのパブリックアクセスが有効になっていたことが原因でした。修正するには、RDSコンソールにてAuroraのクラスターではなくインスタンスを選択して、右上変更ボタンから進んでパブリックアクセスを無効にしてください。

参考情報