はじめに
今回は異なる AWS アカウント上に立てた RDS と Databricks を、ピアリング接続する方法について紹介したいと思います。
Databricks の下記のドキュメントを参考にしておりますので、詳細については下記リンク先を参照。
■リンク
・VPC peering
前提条件
ピアリング接続を実施するにあたり、確認すべき項目があります。
少なくとも下記の2つは満たしていないと、VPC の構築からやり直す必要があるので気をつけましょう。
■ピアリング接続の条件
・接続する VPC は互いに異なる CIDR 範囲であること
・接続する VPC は同じリージョンにあること
今回ピアリング接続を実施する環境の情報は以下となります。
AWSアカウント情報 | Databricks | RDS | CIDR範囲 | リージョン |
---|---|---|---|---|
AWSアカウントA | あり | なし | AWSアカウントBと異なる | 東京リージョン |
AWSアカウントB | なし | あり(Oracle RDS) | AWSアカウントAと異なる | 東京リージョン |
手順1
AWSアカウントA
①Databricks 側のVPCコンソール画面で、左にある「ピアリング接続」をクリック
②「ピアリング接続の作成」をクリック
③必要情報を入力して作成。無事に作成できたら、「ピアリング接続の承認待ち」というステータスになるので、AWSアカウントB側で承認されるのを待つ
AWSアカウントB
①VPCコンソールの「ピアリング接続」タブを確認
②AWSアカウントAよりピアリング接続の承認依頼が来ているので(直ぐに表示されない場合があるので、まだ表示されてなかったら更新などして待つ)、表示されているピアリング接続をクリックし、「アクション」→「承認」と選択
③AWSアカウントAよりピアリング接続の承認依頼が来たのを確認したら、表示されているピアリング接続をクリックし「アクション」→「承認」と選択
手順2
AWSアカウントA
①VPCダッシュボードの「ピアリング接続」を選択
②承認されたピアリング接続を選択したら、「アクション」→「DNS編集」を選択
③「DNS解決を有効」にして保存
AWSアカウントB
①VPC ダッシュボードの「ピアリング接続」を選択
②承認したピアリング接続を選択したら、「アクション」→「DNS編集」を選択
③「DNS 解決を有効」にして保存
手順3
AWSアカウントA
①VPC ダッシュボードにある「ルートテーブル」を選択し、該当 VPC のルートテーブルを検索
②ルートテーブルの「編集」を選択し、ピアリング接続している AWS アカウントB の VPC の CIDR 範囲を「送信先」に入力し、「ターゲット」に作成したピアリングを選択して保存
AWSアカウントB
①VPC ダッシュボードにある「ルートテーブル」を選択し、該当 VPC のルートテーブルを検索
②ルートテーブルの「編集」を選択し、ピアリング接続している AWS アカウントA の VPC の CIDR 範囲を「送信先」に入力し、「ターゲット」に作成したピアリングを選択して保存
手順4
AWSアカウントA
①VPCダッシュボードで「セキュリティグループ」を選択し、Databricks と連携している VPC の ID で検索をかける
②検索をかけた際、セキュリティグループの説明の部分に「Unmanaged security group 」と記載があるセキュリティグループのIDをコピーして、アカウントB側に情報を提供する
AWSアカウントB
①VPCダッシュボードで「セキュリティグループ」を選択し、RDSを構築している VPC の ID で検索をかける
②検索して出てきたセキュリティグループを選択し、「編集」を選択し、「ルールの追加」を選択
③「タイプ」には「Oracle-RDS」 を選択し、AWSアカウントA側で提供された「Unmanaged security group」の ID を「ソース」に入れて保存
手順5
AWSアカウントA
①Databricks 側でクラスターを用意
②notebook で下記のコマンドを入力して、疎通を確認
1 |
%sh nc -zv <hostname> <port> |
・hostname:RDS のエンドポイント
・port:ポート番号(Oracle の場合は1521)
おわりに
これで、異なる AWS アカウントにある Databricks と RDS ピアリング接続することが可能となりました。