前提
・利用環境:Databricks、AWS
・カスタムAWS構成(顧客管理VPC)を使用
・参考アーキテクチャ
参考ヘルプ
目次
- 顧客管理VPCを作成
- Databricksのメタストアを作成
- Databricksの資格情報を作成
- Databricksのワークスペースを作成
- トラブルシューティング
手順
1.顧客管理VPCを作成
参考手順のブログ:
2.Databricksのメタストアを作成
参考手順のブログ
3.Databricksの資格情報を作成
参考手順のブログ
4.Databricksのワークスペースを作成
1)「ワークスペース」をクリック
2)「ワークスペースを作成」をクリック
3)「手動」→「次のページ」をクリック
4)下記の内容を設定し、「次のページ」をクリック
5)「ストレージ構成の作成」をクリック
6)右側の手順を参考にAWS上で、S3とIAMロールを作成する
6-1)S3を作成
6-1-1)AWS上で、S3を作成
6-1-2)「バケットを作成」をクリック
6-1-3)下記の内容を参考にバケットを作成
6-2)IAMロールを作成
6-2-1)AWS上で、IAMロールをクリック
6-2-2)「ロール」→「ロールを作成」をクリック
6-2-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"
}
}
}]
}
6-2-4)「次へ」→「次へ」→ロール名を入力し、「ロールを作成」をクリック
- 例:
- ロール名:ho-iam-s3
6-2-5)「ポリシー」→「ポリシーの作成」をクリック
6-2-6)「JSON」タブをクリックし、以下の内容を貼り付ける
{
"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"
}
]
}
- 次の内容を置き換える
6-2-7)「次へ」をクリック
6-2-8)ポリシー名を入力し、「ポリシーの作成」をクリック
6-2-9)「ポリシー」→「ポリシーの作成」をクリック
6-2-10)「JSON」タブをクリックし、以下の内容を貼り付ける
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": [
"arn:aws:s3:::<BUCKET>",
"arn:aws:sqs:*:*:*",
"arn:aws:sns:*:*:*"
]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:ListQueueTags",
"sns:ListTopics"
],
"Resource": "*"
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": [
"sns:Unsubscribe",
"sns:DeleteTopic",
"sqs:DeleteQueue"
],
"Resource": [
"arn:aws:sqs:*:*:*",
"arn:aws:sns:*:*:*"
]
}
]
}
6-2-11)「次へ」をクリック
6-2-12)ポリシー名を入力し、「ポリシーの作成」をクリック
6-2-13)上で作成したロールを開く→「許可を追加」→「ポリシーをアタッチ」をクリック
6-2-14)上で作成した二つのポリシーをチェックし、「許可を追加」をクリック
6-3)IAMロールのARNを設定
6-3-1)AWS画面で作成したIAMロールを開き、ARNをコピーする
6-3-2)コピーしたARNをDatabricksの「IAMロールARN」欄に貼り付ける
6-4)S3のバケットポリシーを生成する
6-4-1)下記の内容を入力し、「ポリシーを生成」をクリック
6-4-2)生成されたポリシーをコピーする
6-5)上で作成したS3にポリシーを貼り付ける
6-5-1)AWS画面で、上で作成したS3を開く
6-5-2)「アクセス許可」→バケットポリシーの「編集」をクリック
6-5-3)上でコピーしたポリシーをポリシー欄に貼り付けし、「変更の保存」をクリック
6-6)「ストレージ設定の作成・続行」をクリック
7)「資格情報を設定」で、手順3で作成した資格情報を選択
8)「高度な設定」をクリックし、メタストアから手順2で作成したメタストアを選択
9)ネットワーク構成から手順1で作成したVPCを選択
10)「次のページ」をクリック
11)「ワークスペースを作成」をクリック
12)ワークスペースのステータスが「Running」になると成功!
5.トラブルシューティング
1)エラーメッセージ
MALFORMED_REQUEST: Failed network validation checks for network xxx-vpc;
got error:ArrayBuffer(
error_type: "credentials" error_message: "Access denied; need permission for ec2:DescribeNetworkAcls" ,
error_type: "credentials" error_message: "Access denied; need permission for ec2:DescribeVpcAttribute" ,
error_type: "vpc" error_message: "DNS Support not enabled for vpc-0e0eaea756ecedb34." )
- 原因:クロスアカウントIAMロールのポリシーの権限が足りない
- 対策:顧客管理PCへデプロイの場合、オプション2のポリシーを設定しているかを確認
2)エラーメッセージ
Workspace failed to launch.Error: Unknown Error.
- 原因:Databricks側のストレージの設定で、異なったIAMロールのARNが貼り付けされた
- 対策:「ワークスペース更新」で、ストレージ用のIAMロールのARNを設定