Unity CatalogでAWS S3を外部ストレージとして設定する方法

データのセキュリティと管理を統合的に行うことが求められる中、DatabricksのUnity Catalogは、データガバナンスを強化するための最適なソリューションです。特に、AWSのS3をUnity Catalogの外部ストレージとして活用することで、柔軟性とセキュリティを両立したデータ管理基盤を構築できます。本記事では、AWS S3をUnity Catalogと連携させる具体的な手順を詳しく解説します。

目次

はじめに

データのセキュリティと管理を統合的に行うことが求められる中、DatabricksのUnity Catalogは、データガバナンスを強化するための最適なソリューションです。特に、AWSのS3をUnity Catalogの外部ストレージとして活用することで、柔軟性とセキュリティを両立したデータ管理基盤を構築できます。

本記事では、AWS S3をUnity Catalogと連携させる具体的な手順を詳しく解説します。

前提条件

以下の前提条件を満たしている必要があります。

  • Databricksアカウント: Unity Catalogが利用可能な環境。
  • AWSアカウント: IAMロールやポリシーを作成する権限があること。
  • 基本的なAWSの操作知識: IAMやS3の管理画面の操作に慣れていること。

手順概要

  1. DatabricksアカウントIDとAWSアカウントIDを取得する。
  2. IAMロールを作成し、Databricksコントロールプレーンがアクセス可能な設定を行う。
  3. Unity Catalogのルートストレージとして利用するS3バケットを作成する。
  4. IAMポリシーを設定し、IAMロールにアタッチする。
  5. Databricks Unity CatalogでS3をルートストレージとして設定する。

ステップ1: DatabricksアカウントIDとAWSアカウントIDの取得

DatabricksアカウントIDの取得方法

DatabricksアカウントIDは、IAMロールの信頼ポリシー設定で必要です。以下の手順で確認してください。

  1. Databricksアカウントコンソールにログインします。
  2. 左サイドバーから「アカウントコンソール」を選択します。
  3. アカウントID(例: 1234-567890-abcd1234)が表示されます。この値をコピーして控えておきます。
AWSアカウントIDの取得方法

AWSアカウントIDはIAMポリシー設定で必要です。以下の手順で確認できます。

  1. AWSマネジメントコンソールにログインします。
  2. 画面右上のアカウント名をクリックし、「アカウント情報」を選択します。
  3. アカウントID」が表示されます(例: 123456789012)。この値をコピーして控えておきます。

ステップ2: IAMロールの作成

DatabricksがS3にアクセスできるようにするためのIAMロールを作成します。

1.AWSマネジメントコンソールで「IAM」にアクセスします。

2.左メニューから「ロール」を選択し、「ロールを作成」をクリックします。

3.信頼されたエンティティタイプを「AWSのサービス」、ユースケースを「EC2」に設定し、「次へ」をクリックします。

4.「次へ」を数回クリックし、ロール名を入力して「ロールを作成」をクリックします。

信頼ポリシーの編集

1.作成したIAMロールを検索してクリックします。

2.「信頼関係」タブを開き、「信頼ポリシーを編集」をクリックします。

3.以下のポリシーを貼り付けます。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
"arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<DatabricksアカウントID>"
}
}
}
]
}
値の置き換え
  • <DatabricksアカウントID>: 前ステップで取得したDatabricksアカウントID。
  • <AWSアカウントID>: AWSアカウントID。
  • <作成したIAMロール>: このステップで作成したロール名。

ステップ3: S3バケットの作成

Unity Catalogのルートストレージとして使用するS3バケットを作成します。

1.AWSマネジメントコンソールで「S3」を開き、「バケットの作成」をクリックします。

2.バケット名を入力(例: my-databricks-bucket)。ピリオド(.)を含めないようにします。

3.「バケットの作成」をクリックし、作成を完了します。

4.作成したバケット名を控えておきます。

 

ステップ4: IAMポリシーの作成

IAMロールがS3バケットにアクセスできるようにするポリシーを作成します。

1.AWSコンソールの「IAM」で「ポリシー」を選択し、「ポリシーを作成」をクリックします。

2.JSONタブを開き、以下を貼り付けます。

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetLifecycleConfiguration",
"s3:PutLifecycleConfiguration"
],
"Resource": [
"arn:aws:s3:::<作成したS3バケット>/*",
"arn:aws:s3:::<作成したS3バケット>"
],
"Effect": "Allow"
},
{
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>"
],
"Effect": "Allow"
}
]
}
値の置き換え
  • <作成したS3バケット>: 作成したS3バケット名。
  • <AWSアカウントID>: AWSアカウントID。
  • <作成したIAMロール>: IAMロール名。
  1. ポリシー名を入力して「ポリシーの作成」をクリックします。
  2. 作成したポリシーをIAMロールにアタッチします。

ステップ5: Databricks Unity Catalogでの設定

1.Databricksワークスペースにログインします。

2.左サイドバーの「カタログ」から「外部ロケーションを追加」を開きます。

3.S3バケットとIAMロールのARNを設定し、Unity Catalogのルートストレージとして登録します。

 

結論

この記事では、AWS S3をDatabricks Unity Catalogの外部ストレージとして設定する手順を解説しました。この設定を行うことで、セキュリティとスケーラビリティを兼ね備えたデータ管理基盤を構築できます。Databricksを使用したデータガバナンスを強化したい方は、ぜひ参考にしてみてください!

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次