search
LoginSignup
1
Help us understand the problem. What are the problem?
Organization

アカウントコンソールを用いたDatabricks on AWSのアカウントのセットアップ、ワークスペースのデプロイ(実践編)

はじめに

このドキュメントはアカウントコンソールを用いたDatabricks on AWSのアカウントのセットアップ、ワークスペースのデプロイの手順において、作業内容の理解を深めるために弊社で実施した作業のログを追記及び、オンラインドキュメントの一部を使用して補足説明したものです。仕様変更等により内容は予告なく変更される場合があります。
Picture1.png

Databricksフリートライアルのサインアップ

Databricksのフリートライアルを開始するには、Databricks 無料トライアルをクリックします。
Picture1.png

必要事項を入力後、”GET STARTED FOR FREE”を押下すると、無料トライアルのプラットフォームの選択ページが表示されます。

ここではAWSを選択してください。
Picture1.png

入力したE-MailアドレスにトライアルのためのWelcomeメールが送信されます。
Picture1.png

メールボックスを確認し以下のような内容のメールが受信したことを確認してください。

注意:メールが届いていない場合には、迷惑メールに分類されていないかご確認ください。

サインアップの確認とサブスクリションプランの選択

アカウントをサインアップした後、Databricksから受け取るWelcomeメールを開き、メールアドレスを検証するためのリンク(Verify your email address)をクリックし、パスワードを設定します。
Picture1.png

新たに表示されるページでDatabricksアカウントのパスワードを設定してください。
Picture1.png

Set Passwordをクリックすると、サブスクリプションプランを選択するページに遷移します。お客様の要件に応じて適切なサブスクリプションプランを選択してください。サブスクリプションプランと価格に関しては、Databricks on AWS プランと料金を参照ください。

Continueをクリックし、Workspacesページを開きます。
Picture1.png

Continueを押下するとワークスペースのセットアップページに遷移します。

ワークスペースのセットアップ

Databricksにサインアップしたユーザーはアカウントオーナー(英語)となり、アカウントオーナーだけが初期セットアップを実行することができます。しかし、他のユーザーを管理者に任命することで、後続の管理者作業を移譲することができます。

Databricksアカウントにサインアップした後は、あなたのチームメンバーがDatabricksの全てのアセットにアクセスするために、最低1つのワークスペースをセットアップします。

注意 以降の説明においては、DatabricksのアカウントコンソールとAWSユーザーインタフェースを用いて、Databricksアカウントをセットアップし、手動でワークスペースを作成する手順を説明します。別の方法として、CloudFormationのテンプレートを活用して、より容易にワークスペースを構築できるDatabricks on AWS Quickstartsを用いることもできます。このAWS Quickstartsは、ITインフラのアーキテクト、管理者、DevOps専門家をターゲットとしたものです。

注意 このドキュメントで実施しているDatabricks管理のデフォルト設定でワークスペースをセットアップする場合、以下のリソースが新規に作成されます。

AWS自体の制限値に抵触しないか事前に確認し、必要に応じて調整ください。(Elastics IPなど最大デフォルト値:5など)
Picture1.png

訳者注
2022/1/7時点では、初回Databricksアカウントコンソールにログインした際は、Databricksアカウントのセットアップとワークスペースの作成で説明されているクイックスタートによる構築がデフォルトとなっています。顧客管理VPCを用いたデプロイを行う場合には、一旦以下の方法で本手法をスキップしてから、本書で説明されているデプロイ手順を踏んでください。

  1. AWSアカウントコンソールからログアウトしておきます。
  2. Databricksアカウントコンソールにログインし、2つのメッセージ画面を経た後で、Workspace Nameに適当な名前を入力し、一旦Start quickstartをクリックします。上でログアウトしておかないとCloud Formationのスタックを作成してしまうので注意してください。
  3. AWSアカウントコンソールが別タブで開きますがこちらは閉じます。
  4. アカウントコンソールに戻るとワークスペース一覧が表示されます。
  5. こちらでCreate workspace > Custom AWS configurationを選択してください。

Create workspaceをクリックしてセットアップを開始

ワークスペースは、あなたのチームメンバーがDatabricksの全てのアセットにアクセスするための環境となります。
Picture1.png

Create Workspaceをクリックし、Custom AWS configurationを選択します。その後、ワークスペース名、リージョン、サブスクリプションプランを設定します。
Picture1.png

  • Workspace name: 人の目で見て理解できる名称をつけます。例えば、“Acme data science workspace”などです。
  • Subscription plan: サブスクリプションページで選択したプランです。
  • Region: Databricksワークスペースのリソースを格納するAWSリージョンです。

認証設定の作成 - External ID(Databricksアカウント)の取得

認証設定(credential configuration)では、DatabricksがあなたのAWSアカウントでクラスターを起動するのに必要なアクセス権をもつクロスアカウントIAMロールを作成し、それらの情報を入力します。

IAMロールと認証情報を作成するにはCredential configurationで、Add a new credentialを選択します。
Picture1.png

ポップアップされるAdd Credential Configurationダイアログで、External IDをコピーしておきます。次のステップでIAMロールを作成する際に必要になります。

例:以下の例では37e9ffbe-236e-4e80-ad42-24b017419657がExternal IDとなります。
Picture1.png

認証設定の作成 - IAMロールを作成

AWS マネジメントコンソールへ移動し、ご利用中のAWSアカウントへログインします。このAWSアカウントにDatabricksワークスペースが連携されます。

次にAWSアカウントコンソールを使用して、Create a cross-account IAM role(英語)の手順に沿ってIAMロールを作成します。

注意 これらの手順においては、デフォルトのDatabricks管理のVPCか顧客管理VPCを使うかに応じて、ロールのポリシーに3つの選択肢が存在します。Standardプランを含む、典型的なパターンではDatabricks管理のVPCを使用します。Premium、Enterpriseサブスクリプションの場合は、ワークスペースを作成する際にVPCのタイプを選択することができます。なお、Databricks管理VPCから顧客管理VPCにワークスペースを移行することはできません。

IAMロールの作成

信頼されたエンティティとして別のAWSアカウントを選択し、アカウントIDにDatabricks固有のID414351767826を入れます。外部IDにはAdd Credential ConfigurationダイアログでコピーしたExternal IDを外部IDとして入力します。
Screen Shot 2021-12-01 at 10.06.25.png

次のステップをクリック 
Picture1.png

次のステップをクリック (設定必要なし)
Picture1.png

次のステップをクリック (設定必要なし)
Picture1.png

ロール名を入れます。注:英数字のみの入力になります
Picture1.png

ロールができたことを確認します。

認証設定の作成 - 作成したIAMロールにインラインポリシーの追加

作成したロールをクリックし、右下の+インラインポリシーの追加をクリックします。
Picture1.png

ポリシーの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]

注意 注:このポリシーはDatabricksオフィシャルドキュメントからも参照頂けます。このドキュメントで使用するのは”Databricks VPC”で表示されるポリシーです

Picture1.png

Picture1.png

ポリシーJSON (以下は”Databricks VPC”のポリシー)

顧客管理VPCを使用する場合は、Your VPC, defaultもしくはYour VPC, customのポリシーを選択し、構築する環境に応じて修正が必要となります。

JSON
{
"Version": "2012-10-17",
"Statement": [{
      "Sid": "Stmt1403287045000",
      "Effect": "Allow",
      "Action": [
        "ec2:AllocateAddress",
        "ec2:AssociateDhcpOptions",
        "ec2:AssociateIamInstanceProfile",
        "ec2:AssociateRouteTable",
        "ec2:AttachInternetGateway",
        "ec2:AttachVolume",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CancelSpotInstanceRequests",
        "ec2:CreateDhcpOptions",
        "ec2:CreateInternetGateway",
        "ec2:CreateKeyPair",
        "ec2:CreateNatGateway",
        "ec2:CreatePlacementGroup",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:CreateVpc",
        "ec2:CreateVpcEndpoint",
        "ec2:DeleteDhcpOptions",
        "ec2:DeleteInternetGateway",
        "ec2:DeleteKeyPair",
        "ec2:DeleteNatGateway",
        "ec2:DeletePlacementGroup",
        "ec2:DeleteRoute",
        "ec2:DeleteRouteTable",
        "ec2:DeleteSecurityGroup",
        "ec2:DeleteSubnet",
        "ec2:DeleteTags",
        "ec2:DeleteVolume",
        "ec2:DeleteVpc",
        "ec2:DeleteVpcEndpoints",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeIamInstanceProfileAssociations",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeNatGateways",
        "ec2:DescribePlacementGroups",
        "ec2:DescribePrefixLists",
        "ec2:DescribeReservedInstancesOfferings",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSpotInstanceRequests",
        "ec2:DescribeSpotPriceHistory",
        "ec2:DescribeSubnets",
        "ec2:DescribeVolumes",
        "ec2:DescribeVpcs",
        "ec2:DetachInternetGateway",
        "ec2:DisassociateIamInstanceProfile",
        "ec2:DisassociateRouteTable",
        "ec2:ModifyVpcAttribute",
        "ec2:ReleaseAddress",
        "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"
        }
      }
    }]
}

インラインポリシー名を入力してポリシーを作成を押下します。
Picture1.png

IAMロールの作成が終わったら、ロールARNをコピーしておきます。
Picture1.png

認証設定の作成 - 作成したロールARNを入力

Add Credential Configurationダイアログに戻って、Credential Configuration Nameに設定名を入力します。あなたの認証設定とチームの他の人が今後作成するものの区別がつくように名前をつけてください。

AWSコンソールから作成したAIMロールのRole ARNフィールドにロールARNを貼り付けます。
Picture1.png

Addをクリックします。詳細は、Create a credential configuration(英語)を参照ください。

ストレージ設定の作成

Storage configurationフィールドで、Add a new storage configurationを選択します。
Picture1.png

Add Storage Configurationダイアログで、ストレージ設定名を入力します。あなたのストレージ設定とチームの他の人が今後作成するものの区別がつくように名前をつけてください。DatabricksのDBFS(Databricksファイルシステム)ルートに使用するS3バケット名を入力します。あなたのAWSアカウントにおいて、他のバケットと区別がつく名前を指定します。S3バケットを作成する際にはここ指定するものと同じS3バケット名を使う必要があります。

Picture1.png

あなたのAWSアカウントでS3バケットを作成する際に使用するバケットポリシーを生成するために、Generate Policyをクリックします。
Picture1.png

生成されたバケットポリシーをコピーします。これは、Create the S3 bucket(英語)に従って、あなたのAWSアカウントでバケットを作成する際に使用します。

バケットポリシーをコピーしたら、Addを押下します。(バケットポリシーは https://docs.databricks.com/administration-guide/account-api/aws-storage.html にも記載されています)

注意 この時点ではまだSaveは押下しないでください。AWS側でのS3バケットの作成、ネットワーク設定が完了するまでSaveを押さないでください。

Picture1.png

AWSコンソールでDatabricksのDBFSルート用のS3バケットを作成

上で作成したストレージ設定を適用するDBFSルート用のストレージS3バケットを作成します。DBFSルートストレージS3バケットは、クラスターのログ、ノートブックのバージョン、ジョブ結果などを格納するために必要となります。また、テストに必要なデータなどを格納するために使用することもできます。

詳細はManage storage configurations using the account console (E2)を参照ください。

注意 同一アカウントに属する複数のワークスペースでルートS3バケットを共有することができます。ワークスペースごとにバケットを作る必要はありません。複数ワークスペースでバケットを共有した場合、バケット上のデータはワークスペースごとに異なるディレクトリごとに区切られることになります。すでにS3バケットがある場合にはこのステップをスキップできます。

リファレンス
Configure AWS storage (E2 and log delivery only) — Databricks Documentation

ストレージ設定で指定したS3バケット名を入力します。
Picture1.png

推奨事項
Databricksでは、バケットのバージョニングを有効にすることを強く推奨しています。バージョニングは、ファイルが誤って変更または削除された場合に、バケット内のファイルの以前のバージョンを復元することができます。

Picture1.png
Picture1.png

S3バケットのアクセス許可にDatabricksのバケットポリシーを設定します。
Picture1.png
Picture1.png

生成されたバケットポリシーを貼り付け、変更を保存を押下します。
Picture1.png
Picture1.png

ネットワーク設定を作成

顧客管理VPCを使用したセットアップを実施しない場合はこの設定はスキップしてください。

顧客管理VPCの設定例については、Databricksにおける顧客管理VPC(実践編)をご覧ください。

顧客管理のVPC(customer-managed VPC)を使用したセットアップを実施する場合は以下のネットワーク設定を作成します。事前に顧客管理VPCに記載されている要件に合致するVPCを作成しておく必要があります。

Advanced settings > Network configurationで、Add a new network configurationを選択します。
Picture1.png

Add Network Configurationダイアログで、ネットワーク設定名を指定します。あなたのネットワーク設定とチームの他の人が今後作成するものの区別がつくように名前をつけてください。

顧客管理VPCで使用するVPC ID、サブネットID、セキュリティグループIDを入力します。
Picture1.png

Addをクリックします。

Workspaceのプロビジョニング

全ての項目の入力が完了しましたら、Saveを押下してください。
Picture1.png

Saveボタンを押下するとワークスペースのプロビジョニングが開始されます。
Picture1.png

約10-15分程度でワークスペースのセットアップが完了します。
Picture1.png

作成したワークスペースへのリンクをクリックするとワークスペースURL等の情報が表示されます。
Picture1.png

ワークスペースの動作確認

ワークスペースURLをクリックすることで、ワークスペースに移動することができます。ワークスペースURLをブックマークしておき、アカウントコンソールにアクセスする際に用いたユーザー名(メールアドレス)とパスワードでログインします。
Picture1.png

新規にクラスターを作成できることを確認してください。
Picture1.png

クラスターが起動できましたら動作確認は完了です。

次のステップ

Databricks 無料トライアル

Databricks 無料トライアル

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1
Help us understand the problem. What are the problem?