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の管理画面の操作に慣れていること。
手順概要
- DatabricksアカウントIDとAWSアカウントIDを取得する。
- IAMロールを作成し、Databricksコントロールプレーンがアクセス可能な設定を行う。
- Unity Catalogのルートストレージとして利用するS3バケットを作成する。
- IAMポリシーを設定し、IAMロールにアタッチする。
- Databricks Unity CatalogでS3をルートストレージとして設定する。
ステップ1: DatabricksアカウントIDとAWSアカウントIDの取得
DatabricksアカウントIDの取得方法
DatabricksアカウントIDは、IAMロールの信頼ポリシー設定で必要です。以下の手順で確認してください。
- Databricksアカウントコンソールにログインします。
- 左サイドバーから「アカウントコンソール」を選択します。
- アカウントID(例:
1234-567890-abcd1234
)が表示されます。この値をコピーして控えておきます。
AWSアカウントIDの取得方法
AWSアカウントIDはIAMポリシー設定で必要です。以下の手順で確認できます。
- AWSマネジメントコンソールにログインします。
- 画面右上のアカウント名をクリックし、「アカウント情報」を選択します。
- 「アカウント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ロール名。
- ポリシー名を入力して「ポリシーの作成」をクリックします。
- 作成したポリシーをIAMロールにアタッチします。
ステップ5: Databricks Unity Catalogでの設定
1.Databricksワークスペースにログインします。
2.左サイドバーの「カタログ」から「外部ロケーションを追加」を開きます。
3.S3バケットとIAMロールのARNを設定し、Unity Catalogのルートストレージとして登録します。
結論
この記事では、AWS S3をDatabricks Unity Catalogの外部ストレージとして設定する手順を解説しました。この設定を行うことで、セキュリティとスケーラビリティを兼ね備えたデータ管理基盤を構築できます。Databricksを使用したデータガバナンスを強化したい方は、ぜひ参考にしてみてください!