Databricks on AWS にデプロイ手順 (in 顧客管理VPC)

概要

AWS 上かつ顧客管理 VPC 上で稼働する Databricks の構築方法です。

詳細に解説されている記事が豊富にありますが (参考 URL 参照)、AWS ポータルの触り方を結構忘れていたので、Your VPC, custom で実装する手順を残しておきます。

手順

Cloudformation テンプレート

Cloudformation で構築します。
以下記事を参考にさせてもらいました。

DatabricksでCustemer Managed VPCにClusterをプロビジョニングする | DevelopersIO

https://dev.classmethod.jp

YAML でテンプレートを書き、ローカル環境などに保存します。
今回は、

  • VPC=/22
  • Subnet=/25
  • Region=ap-northeast-1a

で設定しています。
リソース名称や設定を細かく設定したい方は適宜変更しましょう。

スタックの作成

先ほど保存した YAML をつかって Cloudformation でスタックを作成します。

スタックの作成をクリック
image.png

YAML をアップロード、デザイナーで表示。
image.png

Databricks を稼働させる VPC 構成はこのような形に。
テンプレートは S3 に保存し、スタックの作成 (クラウドに↑アイコン)をクリック。
image.pngimage.png

ステップ2へと進み、スタックの名称を指定。
image.png

ステップ3のオプション設定は行わず、ステップ4レビューへと進み、スタックの作成をクリックすると、リソースの構築が始まります。
image.png

デプロイが完了したら VPC コンソールに移動し、以下パラメータを控えておきます。

image.png

Network Configrations 作成

Databricks の Admin コンソールに移り、network configration を設定します。別のWSとこれを共有することはないので、一意に識別しやすい名称を付けておきましょう

Network Configration 名称例
databricks-in-customer-managed-vpc-nw-config-01

先ほど拾ったパラメータも入力、Add をクリック

image.png

以下で完了
image.png

Credential configuration 作成

先ほどと同様に WS をデプロイするための権限も設定していきます。config の名称を入れ、External ID は控えておきます。まだ Add は押しません。

Network Configration 名称例
databricks-in-customer-managed-vpc-credential-config-01

image.png

AWS IAM コンソールに移り、ロールを作成をクリック
image.png

アプリケーションからのアクセスを許可する必要があるので、このロールを利用できる Databricks の AWS アカウントID (414351767826) を指定、External ID を入力。ロール名をいれてロールの作成をクリック。

Credential configuration 名称例
databricks-in-customer-managed-vpc-credential-01

image.png

作成したロールを選択し、インラインポリシーを記述。

image.png

書き換える必要のある変数は4つです。

変数 概要
ACCOUNTID 顧客の AWS アカウント ID
VPCID Cloudformation で作成した VPC の ID
REGION Databricks WS をデプロイするリージョン
SECURITYGROUPID Cloudformation で作成した SG の ID

インラインポリシーのひな形はこちら。

databricks-ws-inline-policy

ポリシーの記述まで終わったら ロール ARN をコピーし、
image.png

Databricks コンソールの Role ARN にペースト、Add をクリック
image.png

これで Credential Configuration の設定は完了
image.png

Storage configuration 作成

最後にストレージの設定をします。Databricks の DBFS がここに収まる形です。

ストレージ名称とバケット名を入力、Generate Bucket Policy をクリックし、出力された JSON をコピーしたら、Add をクリック。

databricks-in-customer-managed-vpc-storage-01

image.png

AWS S3 コンソールへ移り、先ほど指定したバケット名で S3 を構築
image.png

バケットのバージョニングは有効化推奨です。
image.png

構築したバケットのアクセス許可からバケットポリシーの編集と進み、
image.png

先ほどコピーした JSON をペースト、変更の保存をクリックして完了です。
image.png

WS デプロイ

最後のステップです。

Workspace から Create Workspace と進み、
image.png

ワークスペースの名称、URL を入力、ここまでで作成した Configration 3つを選択、Save をクリック
image.png

ステータスが running になれば完成
2021-11-12_13h18_23.png

作成した WS を選択すると明細を確認できます。URL をクリックすると、
image.png

Databricks のルートアカウントでアクセスできます。
image.png

備考:デプロイがうまくいかない場合に確認すること

Credential Configuration の設定が以下で正しいかチェック
image.png

Service Control Policy でクロスアカウントアクセスを Deny しているかどうかチェック
もし Deny されているようなら Databricks がクロスアカウントの役割を引き受けられるようにホワイトリストでの登録が必要
image.png

参考 URL

トラブルシュートが必要な時は Databricks 弥生さんの記事群が参考になります。

Databricksクイックスタートガイド – Qiita

https://qiita.com

Databricks on AWSにおけるアカウントのセットアップとワークスペースのデプロイメント(実践編) – Qiita

https://qiita.com

Databricksにおける顧客管理VPC – Qiita

https://qiita.com

Databricksにおける顧客管理VPC(実践編) – Qiita

https://qiita.com

Databricksワークスペース(E2)作成時のトラブルシューティング – Qiita

https://qiita.com