このチュートリアルでは、プライベートVPCサブネット内にAmazon RDSインスタンスを設定し、SSHトンネルを使用して接続する方法について説明します。
リバースSSHトンネルは、VPC内からChartioのサーバーへのアウトバウンド暗号化接続を確立します。これにより、ルートテーブルやセキュリティグループを変更することなく、ChartioをプライベートVPCサブネット内のデータベースに接続できます。
次の図は、最終的なアーキテクチャがどのようになるかを示しています。 us-west-1リージョンに2つのサブネットを持つVPCを作成します。 us-west-1aアベイラビリティーゾーンに1つのパブリックサブネットとus-west-1bアベイラビリティーゾーンに1つのプライベートサブネット。 VPCにはインターネットゲートウェイが接続されますが、メインルートテーブルには、VPC内の通信を可能にする単一のローカルルートのみが含まれます。パブリックサブネットには、ローカルルートと、インターネットゲートウェイを介して他のすべてのトラフィックを転送するルートを含むカスタムルートテーブルがあります。 Postgres RDSインスタンスは、パブリックサブネットからのポート5432でのインバウンドトラフィックのみを許可するセキュリティグループが接続されたプライベートサブネットでプロビジョニングされます。 EC2インスタンスは、ローカルIPからのインバウンドSSHトラフィックとすべてのアウトバウンドトラフィックのみを許可するセキュリティグループが接続されたパブリックサブネットでプロビジョニングされます。最後に、EC2インスタンスにSSHで接続し、Postgresクライアントpsql
をインストールします 、RDSインスタンスにテーブルを作成し、SSHトンネルをインストールして設定します。
VPCを作成する
AWS Management ConsoleでVPCダッシュボードに移動し、新しいVPCを作成します。
VPCダッシュボードの[インターネットゲートウェイ]タブで、新しいインターネットゲートウェイを作成します。
新しく作成されたVPCにゲートウェイを接続します。
VPCダッシュボードの[ルートテーブル]タブで、新しいルートテーブルを作成します。
インターネットゲートウェイのルートテーブルにルートを追加します。
us-west-1aアベイラビリティーゾーンにサブネットを作成します。
以前に作成したサブネットのルートテーブルをメインルートテーブルからカスタムルートテーブルに変更します。
us-west-1bアベイラビリティーゾーンにサブネットを作成します。
パブリックus-west-1aサブネットでプロビジョニングされるEC2インスタンスのセキュリティグループを作成します。
ローカルIPアドレスからのインバウンドSSHトラフィックを承認します。デフォルトのアウトバウンドルールで問題ないはずです。
プライベートus-west-1bサブネットでプロビジョニングされるPostgresRDSインスタンスのセキュリティグループを作成します。
ポート5432を介したパブリックサブネットからのインバウンドトラフィックを承認します。
RDSセキュリティグループのすべてのアウトバウンドルールを削除します。
EC2インスタンスをプロビジョニングする
パブリックus-west-1aサブネットにEC2インスタンスをプロビジョニングします。パブリックIPが割り当てられていることを確認します。
以前に作成したセキュリティグループを割り当てます。
PostgresRDSインスタンスをプロビジョニングする
プライベートus-west-1bサブネットにPostgresRDSインスタンスをプロビジョニングします。パブリックIPが割り当てられていないことを確認してください。
SSHトンネルをインストールして設定します
EC2インスタンスにSSHで接続し、次のコマンドを実行します。
# Substitute 54.153.81.83 with your instance's public IP.
ssh [email protected]
# Create a table so Chartio has something to reflect.
# Substitute chartio.cacziwncd30i.us-west-1.rds.amazonaws.com with your instance's endpoint.
sudo apt-get update
sudo apt-get install postgresql-client
psql -h chartio.cacziwncd30i.us-west-1.rds.amazonaws.com -p 5432 -d chartio -U chartio -c "CREATE TABLE foo(id int);"
autossh(または選択したSSHトンネルマネージャー)をインストールし、手順を使用してトンネル接続をセットアップします。
Chartioスキーマエディタをチェックして、RDSインスタンスのスキーマが反映されていることを確認します。表示されていない場合は、[スキーマの更新]ボタンをクリックしてみてください。