DatabricksのUnity Catalogメタストアを作成してみた

## 前提
・利用環境：Databricks、AWS

https://www.databricks.com/jp/try-databricks?scid=7018Y000001Fi15QAC&utm_medium=paid+search&utm_source=google&utm_campaign=17377047998&utm_adgroup=138148229998&utm_content=trial&utm_offer=try-databricks&utm_ad=732035937815&utm_term=databricks%20%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB&gad_source=1&gclid=CjwKCAiA8Lu9BhA8EiwAag16b8b3zbkIb3V7gp-8VUwKukXnhtVZRQ-1RY8SbETmGVgNT4bQramYmRoCX5wQAvD_BwE#account

https://aws.amazon.com/jp/free/?gclid=CjwKCAiA8Lu9BhA8EiwAag16bz9ymovIOJzlwFFMfg75NQxxY8FJPB4Hslg7RheD7ipZ5gbvOWCd1RoCyP0QAvD_BwE&trk=8a8e7906-914d-4577-93a2-d09e75ae5941&sc_channel=ps&ef_id=CjwKCAiA8Lu9BhA8EiwAag16bz9ymovIOJzlwFFMfg75NQxxY8FJPB4Hslg7RheD7ipZ5gbvOWCd1RoCyP0QAvD_BwE:G:s&s_kwcid=AL!4422!3!487544183224!e!!g!!aws%20%E7%84%A1%E6%96%99%E5%88%A9%E7%94%A8%E6%9E%A0!11772965715!117413644991&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all
## 参考ヘルプ
https://docs.databricks.com/ja/data-governance/unity-catalog/create-metastore.html#add-storage
## 目次
1. メタストア用のS3を作成
2. IAMロールを作成
3. メタストアを作成
## 手順
### 1.メタストア用のS3を作成
#### 1)AWS上で、S3を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/a7962cbc-7031-4a2c-92ac-16cb669a2e5d.png)
#### 2)「バケットを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/b271878c-bef2-4c6a-b164-2a5aaa33ddd6.png)
#### 3)下記の内容を参考にバケットを作成
- 例：
    - AWSリージョン：ap-northeast-1
    - バケットタイプ：汎用
    - バケット名：ho-db-uc-ms
    - その他：デフォルトのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/5412f053-fb70-44de-b20b-ead17ea28e9c.png)
### 2.IAMロールを作成
https://docs.databricks.com/ja/connect/unity-catalog/cloud-storage/storage-credentials.html#create-storage-credentials-1
#### 1)AWS上で、IAMロールをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/3be572cf-aa3a-4444-930e-d7b356c2c8e3.png)
#### 2)「ロール」→「ロールを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/d5c4cb65-dc87-48de-93f7-aaa9b735e065.png)
#### 3)「カスタム信頼ポリシー」を選択し、カスタム信頼ポリシーに以下の内容を貼り付ける
- 次の内容を置き換える
    - "0000"：DatabricksのアカウントID
```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": [
        "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL"
      ]
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "sts:ExternalId": "0000"
      }
    }
  }]
}

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/ec19fa11-caeb-4989-b029-91049ad9fb60.png)
#### 4)「次へ」→「次へ」→ロール名を入力し、「ロールを作成」をクリック
- 例：
    - ロール名：ho-db-uc-role
    - 説明：ho-db-uc-role
#### 5)作成したロールを開き、ARNをコピーする
#### 6)「信頼関係」タブ→「信頼ポリシーを編集」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/17492223-1d29-4974-891f-3f6df852febb.png)
#### 7)プリンシパルを追加の横の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/87c5a93d-25ca-45b6-bab4-0295e02bc9ec.png)
#### 8)「プリンシパルタイプ」から「IAM Roles」を選択し、コピーしたARNを貼り付ける
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/7e8818fe-6bb2-4b93-807e-20c7405f93c8.png)
#### 9)「プリンシパルを追加」をクリック
#### 10)「ポリシーを更新」をクリック
#### 11)「許可」タブ→「許可を追加」→「インラインポリシーを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/805aa964-d16f-4a51-988e-7e452e3ffd7e.png)
#### 12)「JSON」タブをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/c43b3e41-1555-445c-9499-316424de4f3e.png)
#### 13)以下のポリシーを貼り付けし、下記を参考に置き換える
- 次の内容を置き換える
    - ＜BUCKET＞：上の手順で作成したバケット名
    - arn:aws:iam::＜AWS-ACCOUNT-ID＞:role/＜AWS-IAM-ROLE-NAME＞：上の手順で作成したIAMロールのARN
    - KMSの部分：暗号化キーを設定しない場合は、{}塊を削除する
```
{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Action": [
              "s3:GetObject",
              "s3:PutObject",
              "s3:DeleteObject",
              "s3:ListBucket",
              "s3:GetBucketLocation"
          ],
          "Resource": [
              "arn:aws:s3:::<BUCKET>/*",
              "arn:aws:s3:::<BUCKET>"
          ],
          "Effect": "Allow"
      },
      {
          "Action": [
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*"
          ],
          "Resource": [
              "arn:aws:kms:<KMS-KEY>"
          ],
          "Effect": "Allow"
      },
      {
          "Action": [
              "sts:AssumeRole"
          ],
          "Resource": [
              "arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"
          ],
          "Effect": "Allow"
      }
    ]
}
```
#### 14)「次へ」をクリック
#### 15)ポリシー名を入力し、「ポリシーの作成」をクリック
- 例
    - ポリシー名：ho-db-uc-ms-policy
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/8fac4592-0208-48d5-9bdf-cbe13489a6bb.png)
### 3.メタストアを作成
##### 1)Databricksの管理画面にサインインする
https://accounts.cloud.databricks.com/
##### 2)「カタログ」→「メタストアを作成する」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/414bc22c-62f3-4651-9df7-16e4ec86bf7a.png)
##### 3)以下の内容を設定し、「作成」をクリック
- 例
    - 名前：ho-db-uc-ms
    - リージョン：Tokyo(ap-northeast-1)
    - S3バケットパス：s3://ho-db-uc-ms/
    - IAMロールARN：上の手順で作成したIAMロールのARN
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/c905f510-1253-4292-9829-7e3aebe6015b.png)
##### 4)「IAMロールを設定する」画面で、「IAMロールが設定されました」をクリック
##### 5)アタッチするワークスペースを割り当てる。（ない場合は、Skip）をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562390/4bcf6135-fdd3-4fa6-925d-5e5ab33e8975.png)
##### 6)「おめでとうございます」画面で、「閉じる」をクリック

以上