こちらの記事で言及している、Databricks環境構築手順時に必要となる以下の情報の作成手順をカバーする記事です。
こちらの記事でもカバーしていますが、画面構成が変化しているので改めてウォークスルーしました。
クレディンシャル設定の作成
クレディンシャル設定(credential configuration)では、DatabricksがあなたのAWSアカウントでクラスターを起動するのに必要なアクセス権を持つクロスアカウントIAMロールを作成し、それらの情報を入力します。
-
アカウントコンソールにアカウントオーナーとしてログインします。アカウントオーナーを作成していない場合には、こちらのアカウントコンソールへのアクセスまでの作業を進めてアカウントオーナーを作成してください。
-
Credential configurationタブが選択されていることを確認して、Add credential configurationボタンをクリックします。
AWSマネジメントコンソールでの作業
-
AWSのマネジメントコンソールに移動し、DatabricksをデプロイするAWSアカウントでログインします。
-
IAMに移動し、ロールにアクセスします。
-
ロールの作成をクリックします。
-
信頼されたエンティティとして別のAWSアカウントを選択し、アカウントIDにDatabricks固有のID
414351767826
を入れます。外部IDにはAdd Credential ConfigurationダイアログでコピーしたExternal IDを外部IDとして入力します。
-
ロールが作成されたことを確認します。
-
ポリシーのJSONタグをクリックし、Create a cross-account IAM role(英語)にある下記の適切な ポリシー(JSON) を選択して貼り付けます。
デプロイ ポリシー デフォルトのポリシー制限がある顧客管理のVPC:独自のVPCでDatabricksワークスペースを起動します。 [Your VPC, default] カスタムポリシー制限付きの顧客管理VPC:アカウントID、VPC ID、リージョン、およびセキュリティグループによるポリシー制限付きの独自のVPCでDatabricksワークスペースを起動します。 [Your VPC, custom] Databricksが管理するVPC:Databricksが管理するVPCでDatabricksワークスペースを起動します。 [Databricks VPC] ここでは、顧客管理VPCのポリシー
[Your VPC, default]
を設定します。JSON{ "Version": "2012-10-17", "Statement": [{ "Sid": "Stmt1403287045000", "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:AttachVolume", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateTags", "ec2:CreateVolume", "ec2:DeleteTags", "ec2:DeleteVolume", "ec2:DescribeAvailabilityZones", "ec2:DescribeIamInstanceProfileAssociations", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeInternetGateways", "ec2:DescribeNatGateways", "ec2:DescribeNetworkAcls", "ec2:DescribePrefixLists", "ec2:DescribeReservedInstancesOfferings", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeVolumes", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcs", "ec2:DetachVolume", "ec2:DisassociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:RequestSpotInstances", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RunInstances", "ec2:TerminateInstances" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot", "Condition": { "StringLike": { "iam:AWSServiceName": "spot.amazonaws.com" } } }] }
アカウントコンソールでの作業
- アカウントコンソールのAdd Credential Configurationダイアログに戻って、Credential Configuration Nameに設定名を入力します。他の設定と区別がつくようにわかりやすい名前をつけてください。
-
Role ARNフィールドに上で作成したIAMロールのロールARNを貼り付けます。
- Addをクリックします。クレディンシャル設定が作成されたことを確認します。
- PrivateLink構成を組む際にこのクレディンシャル設定を使用する場合には、ローカルマシンのターミナル、コマンドプロンプトから以下のコマンドを実行して作成されたクレディンシャル設定の情報を参照します。必要に応じてcurlやjqをインストールしてください。
curl -X GET -u <アカウントオーナーのメールアドレス>:<アカウントオーナーのパスワード> \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<DatabricksアカウントID>/credentials' | jq
以下のような結果が表示されるので、credentials_nameに対応するcredentials_idをメモしておきます。
[
{
"credentials_id": "<クレディンシャル設定のID>",
"account_id": "<DatabricksのアカウントID>",
"aws_credentials": {
"sts_role": {
"role_arn": "<ロールARN>",
"external_id": "f7253f01-0d0e-4583-bdd0-9aaed2c31dcf"
}
},
"credentials_name": "databricks-credentials-audit-v1",
"creation_time": 1620093584091
}
]
S3バケット設定の作成
- アカウントコンソールにアカウントオーナーとしてログインします。
- サイドメニューのCloud Resourcesをクリックします。
- Storage configurationタブが選択されていることを確認して、Add storage configurationボタンをクリックします。
-
Add storage configurationダイアログが表示されます。
- Storage configuration nameには他の設定と区別がつく名前を指定します。
- Bucket nameには、Databricksのデータ格納に使用するS3バケット名を指定します。この後のステップでS3バケットを作成しますが、他のバケット名と重複しないことを確認してください。
- S3バケットを作成する際に指定するバケットポリシーを生成するためにGenerate policyをクリックします。上で指定したバケット名に応じたポリシーが生成されます。ポリシーをコピーしておきます。
AWSマネジメントコンソールでの作業
上で作成したストレージ設定を適用するDBFSルート用のストレージS3バケットを作成します。DBFSルートストレージS3バケットは、クラスターのログ、ノートブックのバージョン、ジョブ結果などを格納するために必要となります。また、テストに必要なデータなどを格納するために使用することもできます。
-
推奨事項
Databricksでは、バケットのバージョニングを有効にすることを強く推奨しています。バージョニングは、ファイルが誤って変更または削除された場合に、バケット内のファイルの以前のバージョンを復元することができます。
アカウントコンソールでの作業
-
Addをクリックして設定を作成します。
-
PrivateLink構成を組む際にこのストレージ設定を使用する場合には、ローカルマシンのターミナル、コマンドプロンプトから以下のコマンドを実行して作成されたクレディンシャル設定の情報を参照します。必要に応じてcurlやjqをインストールしてください。
Bashcurl -X GET -u <アカウントオーナーのメールアドレス>:<アカウントオーナーのパスワード> \ 'https://accounts.cloud.databricks.com/api/2.0/accounts/<DatabricksアカウントID>/storage-configurations' | jq
以下のようなアウトプットが出るので、storage_configuration_name
に対応するstorage_configuration_id
をメモしておきます。
[
{
"storage_configuration_id": "<ストレージ設定のID>",
"account_id": "<DatabricksのアカウントID>",
"root_bucket_info": {
"bucket_name": "ty-db-audit-log"
},
"storage_configuration_name": "databricks-workspace-storageconf-audit-v1",
"creation_time": 1620092961899
}
]