はじめに
databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。
- その1 databricksアカウントの作成
- その2 AWSアカウントとの連携 ← 今回はここ
- その3 databricks用S3バケットとの連携
本題
AWSアカウントとの連携方法は
- クロスアカウントロールを使用する方法
- アクセスキーを使用する方法
の2種類がありますが、databricks公式サイトではクロスアカウントロールを使用する方法を強く推奨しているので、今回はそちらの方法で進めて行こうと思います。
ここからはAWSアカウントとdatabricksアカウントを使用するので、
両方ログインした状態のページのご用意をお願いいたします。
➀databricksアカウント設定
databricksコンソール画面から、サイドバー内「AWS Account」を選択
「Deploy to AWS using Cross Account Role」にチェック
AWS Regionは「ap-northeast-1:Asia Pacific(Tokyo) Region」を選択
External IDはIAMロール作成時に使用するので、コピーしておいてください
ここまで終えたら一旦AWS側の設定に移ります。

➁クロスアカウントロールとアクセスポリシーの作成
AWSコンソール画面からIAMサービスのページへ移動します。
(検索欄でIAMと入れれば移動できます。)
「ロールの作成」をクリック。
「別のAWSアカウント」を選択。
「このロールを使用できるアカウントを指定する」の必要事項欄を埋めていきます。
アカウントID : 414351767826
オプション : 外部IDが必要にチェック
外部ID : 本題➀でコピーしたExternal IDをペースト
3つの記入が済んだら「次のステップ:アクセス権限」をクリック

IAMの画面に戻り、サイドバーから「ロール」を選択。
ロール一覧内から作成したロールを選択

JSONのタブを選択し、以下コードをコピペ
「ポリシーの確認」をクリック
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | {   "Version": "2012-10-17",   "Statement": [     {       "Sid": "Stmt1403287045000",       "Effect": "Allow",       "Action": [           "ec2:AssociateDhcpOptions",           "ec2:AssociateIamInstanceProfile",           "ec2:AssociateRouteTable",           "ec2:AttachInternetGateway",           "ec2:AttachVolume",           "ec2:AuthorizeSecurityGroupEgress",           "ec2:AuthorizeSecurityGroupIngress",           "ec2:CancelSpotInstanceRequests",           "ec2:CreateDhcpOptions",           "ec2:CreateInternetGateway",           "ec2:CreateKeyPair",           "ec2:CreatePlacementGroup",           "ec2:CreateRoute",           "ec2:CreateSecurityGroup",           "ec2:CreateSubnet",           "ec2:CreateTags",           "ec2:CreateVolume",           "ec2:CreateVpc",           "ec2:CreateVpcPeeringConnection",           "ec2:DeleteInternetGateway",           "ec2:DeleteKeyPair",           "ec2:DeletePlacementGroup",           "ec2:DeleteRoute",           "ec2:DeleteRouteTable",           "ec2:DeleteSecurityGroup",           "ec2:DeleteSubnet",           "ec2:DeleteTags",           "ec2:DeleteVolume",           "ec2:DeleteVpc",           "ec2:DescribeAvailabilityZones",           "ec2:DescribeIamInstanceProfileAssociations",           "ec2:DescribeInstanceStatus",           "ec2:DescribeInstances",           "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:ModifyVpcAttribute",           "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"         }       }     }   ] } | 
➂databricksアカウント設定残り
本題➀で使用していたdatabricksの画面に戻ります。
本題➁でコピーしておいたロールARNをペーストして「Next Step」をクリック

自動的にS3設定画面に移動したら、その2の作業は無事完了です。

おわりに
今回その2ではAWSアカウントとの連携作業を行いました。
次回その3ではいよいよ最後のS3との連携作業を行います。
引き続き頑張りましょう!
お疲れ様でした。









