LoginSignup
0
0

More than 1 year has passed since last update.

Databricks構築時におけるクレディンシャル設定とS3バケット設定の作成手順(AWS編)

Posted at

こちらの記事で言及している、Databricks環境構築手順時に必要となる以下の情報の作成手順をカバーする記事です。

こちらの記事でもカバーしていますが、画面構成が変化しているので改めてウォークスルーしました。

クレディンシャル設定の作成

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

  1. アカウントコンソールにアカウントオーナーとしてログインします。アカウントオーナーを作成していない場合には、こちらアカウントコンソールへのアクセスまでの作業を進めてアカウントオーナーを作成してください。

  2. サイドメニューのCloud Resourcesをクリックします。
    Screen Shot 2022-05-20 at 8.07.24.png

  3. Credential configurationタブが選択されていることを確認して、Add credential configurationボタンをクリックします。

  4. ダイアログが表示されます。ここでExternal IDの値をコピーしておきます。
    Screen Shot 2022-05-20 at 8.08.25.png

AWSマネジメントコンソールでの作業

  1. AWSのマネジメントコンソールに移動し、DatabricksをデプロイするAWSアカウントでログインします。

  2. IAMに移動し、ロールにアクセスします。

  3. ロールの作成をクリックします。

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

  5. 次のステップをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f31333934313161332d306137312d653063622d386535382d3236393461616361653332332e706e67.png

  6. 次のステップをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f62333264393631312d316566632d336133312d663330652d6433646537346337613633362e706e67.png

  7. 次のステップをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f32336333653166392d363261382d316364382d353735352d3138643236386163653234332e706e67.png

  8. ロール名を入力します。英数字のみが許可されます。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f31666235646663372d303339382d316135362d643835322d3334376236663264393030662e706e67.png

  9. ロールが作成されたことを確認します。

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

  11. ポリシーのJSONタグをクリックし、Create a cross-account IAM role(英語)にある下記の適切な ポリシー(JSON) を選択して貼り付けます。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f63613636313865312d626563312d626431372d616433352d3533393232326137343265612e706e67.png

    デプロイ ポリシー
    デフォルトのポリシー制限がある顧客管理の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"
            }
          }
        }]
    }
    
  12. インラインポリシー名を入力してポリシーを作成をクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f31663430633037342d643733322d353130352d646663342d3839363764663836346136642e706e67.png

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

アカウントコンソールでの作業

  1. アカウントコンソールのAdd Credential Configurationダイアログに戻って、Credential Configuration Nameに設定名を入力します。他の設定と区別がつくようにわかりやすい名前をつけてください。
  2. Role ARNフィールドに上で作成したIAMロールのロールARNを貼り付けます。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f66633166396666642d386432632d363363642d386561612d3664353139643238363034342e706e67.png
  3. Addをクリックします。クレディンシャル設定が作成されたことを確認します。
  4. PrivateLink構成を組む際にこのクレディンシャル設定を使用する場合には、ローカルマシンのターミナル、コマンドプロンプトから以下のコマンドを実行して作成されたクレディンシャル設定の情報を参照します。必要に応じてcurlやjqをインストールしてください。
Bash
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バケット設定の作成

  1. アカウントコンソールにアカウントオーナーとしてログインします。
  2. サイドメニューのCloud Resourcesをクリックします。
    Screen Shot 2022-05-20 at 8.58.44.png
  3. Storage configurationタブが選択されていることを確認して、Add storage configurationボタンをクリックします。
  4. Add storage configurationダイアログが表示されます。
    Screen Shot 2022-05-20 at 8.59.05.png
  5. Storage configuration nameには他の設定と区別がつく名前を指定します。
  6. Bucket nameには、Databricksのデータ格納に使用するS3バケット名を指定します。この後のステップでS3バケットを作成しますが、他のバケット名と重複しないことを確認してください。
  7. S3バケットを作成する際に指定するバケットポリシーを生成するためにGenerate policyをクリックします。上で指定したバケット名に応じたポリシーが生成されます。ポリシーをコピーしておきます。
    Screen Shot 2022-05-20 at 9.04.26.png

AWSマネジメントコンソールでの作業

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

  1. S3に移動して、バケットを作成をクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f61646264666236362d623236312d656166302d613139342d6637313733656463346335362e706e67.png

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

  2. S3バケットのアクセス許可に上でコピーしたDatabricksのバケットポリシーを設定します。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313136383838322f63353436616663642d386335332d653465622d653436312d3561353237643965343835382e706e67.png

アカウントコンソールでの作業

  1. Addをクリックして設定を作成します。

  2. PrivateLink構成を組む際にこのストレージ設定を使用する場合には、ローカルマシンのターミナル、コマンドプロンプトから以下のコマンドを実行して作成されたクレディンシャル設定の情報を参照します。必要に応じてcurlやjqをインストールしてください。

    Bash
    curl -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
  }
]

Databricks 無料トライアル

Databricks 無料トライアル

0
0
2

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
  3. You can use dark theme
What you can do with signing up
0
0