はじめに
前回、Unity Catalogの構築をterraformで実装してみました。ただし考えてみると運用上何度もUnity Catalogを実装することはないと思います。(初回のみ)
しかし、外部ストレージの登録は申請ベースで何度もあるかもしれません。今回はそのようなケースを想定して、外部ロケーション(外部ストレージ)の登録をTerraformで実装してみました。
ちなみにTerraformを使わずにマニュアルで実装すると以下のような手順が必要になります。IAMの作成とS3バケット作成やストレージ資格登録や外部ロケーション登録などちょっとだけ面倒ですね。Unity Catalog 外部ロケーションの登録 (AWS)
テンプレートで自動化される内容
・IAM Role作成
・IAM Policy作成
・S3 Bucket作成と設定
・ストレージ資格作成
・ストレージロケーション作成
事前準備
以下の環境をあらかじめセットアップしておきます。
- Terraform CLI
- Databricks CLI
- AWS CLI ---setup
- また今回はすでにDatabricks Workspace & UnityCatalogが利用できる前提を想定しております。
Unity Catalogをまだセットアップできていない場合はこちらを最初に実行ください。
テンプレートのダウンロード
今回利用するterraformテンプレートはこちらです。
git clone https://github.com/maroon-spec/unity_catalog_externalstorage.git
変数パラメーターの設定
今回は2つのパラメーターファイルに分けております。
auth.auto.tfvars
パラメータ | 例 | 説明 |
---|---|---|
databricks_connection_profile | default | databricks CLIで設定した、今回対象のWS用プロファイル |
aws_connection_profile | default | AWS CLIで設定した今回対象のプロファイル |
aws_region | ap-northeast-1 | AWS Region |
external-storage.auto.tfvars
パラメータ | 例 | 説明 |
---|---|---|
s3_bucket_name | tf-uc-external | S3 bucket name |
aws_iam_role_name | tf-uc-external | IAM Role Name |
external_storage_location_label | some | ストレージロケーションに登録するサブディレクトリ名 |
databricks_account_id | xxxx-xxxx-xxxxx | Databricks Account ID |
terraformの実行
あとは、Terraformの実行だけです。
a) terraform init
初回のみですが、対象のディレクトリー上で上記コマンドを実行します。
$ terraform init
b) terraform plan
$ terraform plan
c) terraform apply
$ terraform apply
ちょっとWarning Messageは出てますが、最後までApplyが成功しました。
確認してみよう
詳細タブで確認するとExternal Tableとして認識されてますね。
最後に
今回はこちらのマニュアルを参考にテンプレートを作成しましたが、ご利用は自己責任にてお願いします。
https://docs.databricks.com/data-governance/unity-catalog/automate.html
それにしてもterraform便利ですね。
UnityCatalogセットアップについてはこちらもご覧ください。
https://qiita.com/maroon-db/items/57cee03cef202c839b94