DatabricksにおけるAWS PrivateLinkのフロントエンド接続の設定(実践編)

本書では、AWS Workspaces上の仮想マシンからPrivateLink構成のDatabricksにアクセスできるようにフロントエンド接続の設定を行います。バックエンド接続の設定に関しては、[DatabricksにおけるAWS PrivateLinkの有効化](https://qiita.com/taka_yayoi/items/c6bdbb6452f6a0895961)、および、[DatabricksにおけるAWS PrivateLinkのバックエンド接続の設定\(実践編\)](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee)をご覧ください。

# AWS Workspacesの設定

公衆回線経由でアクセスしないように、念のために**インターネットへのアクセス**を**無効**にしておきます。こちらの**VPC**と**サブネット**をメモしておきます。

![Screen Shot 2021-11-09 at 21.39.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cf0472d5-9f96-33a9-0e3c-c26d79d57575.png)

ワークスペースが起動したことを確認します。
![Screen Shot 2021-11-09 at 21.42.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/54366e4f-6b1c-22af-e9fa-fc6d7f7d84b6.png)

# セキュリティグループの作成

上記VPCにセキュリティグループ**aws-workspace-sg**を作成します。

**aws-workspace-sgのインバウンドルール**

|タイプ|	ポート|	ソース|
|:--|:--|:--|
|カスタムTCP|	443|	172.16.0.0/16(AWS Workspaces VPCのCIDR)|
|カスタムTCP|	6666|	172.16.0.0/16(AWS WorkspacesVPCのCIDR)|

**aws-workspace-sgのアウトバウンドルール**

|タイプ|	ポート|	送信先|
|:--|:--|:--|
|カスタムTCP|	443|	172.16.0.0/16(AWS WorkspacesVPCのCIDR)|
|カスタムTCP|	6666|	172.16.0.0/16(AWS WorkspacesVPCのCIDR)|

# VPCエンドポイントの作成

環境構築を行っているAWSリージョンに対応するVPCエンドポイントサービスを[こちら](https://docs.databricks.com/administration-guide/cloud-configurations/aws/privatelink.html#create-the-aws-vpc-endpoints)で確認します。東京リージョン(ap-northeast-1)の場合は以下となります。

- Workspace VPC endpoint service: `com.amazonaws.vpce.ap-northeast-1.vpce-svc-02691fd610d24fd64`

**サービスカテゴリでサービスを名前で検索**を選択し、上のエンドポイントサービスで検索を行います。

**VPC**はAWS WorkspacesVPCを選択します。**サブネット**はAWS WorkspacesVPCのサブネットを選択します。

**セキュリティグループ**は**aws-workspace-sg**を選択します。

作成するとステータスが「承諾の保留中」となりますが問題ありません。

# VPCエンドポイントの登録

以降はAccount APIを操作します。ローカル環境でコマンドプロンプト、ターミナルなどを開いてください。ここでは、以下のツールを使用します。

- curl
- jq

以下の情報をメモしておいてください。

- DatabricksアカウントID
- [アカウントオーナー](https://qiita.com/taka_yayoi/items/c53beee557ae4a9643ac)のメールアドレスおよびパスワード

```bash
curl -X POST -u <アカウントオーナーのメールアドレス>:<アカウントオーナーのパスワード> -n \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<DatabricksアカウントID>/vpc-endpoints' \
-d '{
"vpc_endpoint_name": "workspace-rest-api-frontend",
"region": "ap-northeast-1",
"aws_vpc_endpoint_id": "vpce-0c4c07c32f30868b3"
}' | jq
```

結果

```
{
  "vpc_endpoint_id": "64ccf132-512b-4347-9c55-c4d5a67fd261",
  "account_id": "<DatabricksアカウントID>",
  "vpc_endpoint_name": "workspace-rest-api-frontend",
  "aws_vpc_endpoint_id": "vpce-071d657e16a943ca5",
  "aws_endpoint_service_id": "vpce-svc-02691fd610d24fd64",
  "use_case": "WORKSPACE_ACCESS",
  "region": "ap-northeast-1",
  "aws_account_id": "814153277231",
  "state": "pending"
}
```

# VPCエンドポイントのプライベートDNS名を有効化する

まず初めに、AWS WorkspacesのVPCで**DNS ホスト名**、**DNS 解決**の両方が**有効**になっていることを確認します。なっていない場合には有効化します。

![Screen Shot 2021-11-09 at 21.52.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a1a85f77-a817-e9d7-6a7c-4c5dd3437884.png)

上で作成したエンドポイントを選択し、**アクション**から**プライベートDNS名の変更**を選択します。**プライベート DNS 名を有効にする**の**このエンドポイントで有効にする**のチェックを入れて、**プライベートDNS名の変更**をクリックします。

ステータスが「保留中」になりますが、少し待てば「使用可能」になります。

# AWS Workspacesから動作確認を行う

仮想マシンにアクセスし、ブラウザを開きPrivateLink構成で構築したDatabricksワークスペースのURLにアクセスします。
![Screen Shot 2021-11-09 at 21.57.11.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/50d7705a-01d2-5099-ce84-4be8ad6bdc94.jpeg)



### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)