Databricks と AWS の VPC ピアリング接続設定

はじめに

今回は異なる 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側で承認されるのを待つ

image.png

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 範囲を「送信先」に入力し、「ターゲット」に作成したピアリングを選択して保存

image.png

手順4

AWSアカウントA

①VPCダッシュボードで「セキュリティグループ」を選択し、Databricks と連携している VPC の ID で検索をかける
②検索をかけた際、セキュリティグループの説明の部分に「Unmanaged security group 」と記載があるセキュリティグループのIDをコピーして、アカウントB側に情報を提供する

image.png

AWSアカウントB

①VPCダッシュボードで「セキュリティグループ」を選択し、RDSを構築している VPC の ID で検索をかける
②検索して出てきたセキュリティグループを選択し、「編集」を選択し、「ルールの追加」を選択
③「タイプ」には「Oracle-RDS」 を選択し、AWSアカウントA側で提供された「Unmanaged security group」の ID を「ソース」に入れて保存

image.png

手順5

AWSアカウントA

①Databricks 側でクラスターを用意
②notebook で下記のコマンドを入力して、疎通を確認

・hostname:RDS のエンドポイント
・port:ポート番号(Oracle の場合は1521)

おわりに

これで、異なる AWS アカウントにある Databricks と RDS ピアリング接続することが可能となりました。