databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~


はじめに

公式ドキュメントやってみたシリーズ第2弾です。
今回のテーマは
「Secure access to S3 buckets using instance profiles」です。
インスタンスプロファイルを使用してセキュアにS3バケットにアクセスする方法をdatabricks公式ドキュメントの手順に従ってやってみたいと思います。

今回の作業内容

今回行う作業は以下の8項目です。

※0.ターゲットS3バケットの作成

  1. S3バケットにアクセスするためのインスタンスプロファイルを作成

  2. ターゲットのS3バケットのバケットポリシーの作成

  3. databricks on AWSデプロイ時のIAMロールの確認

  4. ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与

  5. インスタンスプロファイルをdatabricksにアタッチ

  6. インスタンスプロファイルを使用してクラスタを立ち上げる

  7. ノートブックから今回設定したS3へのアクセスを確認する

作業自体がやや長いのと、
細かいロールやポリシーの設定があるため

  • 前編(0~3)→AWS側の設定
  • 後編(4~7)→databricks側の設定

に分けてやっていきたいと思います。

本題

では、本題に入っていきましょう。

5. インスタンスプロファイルをdatabricksにアタッチ

前編.1で作成したIAMロールを選択し、インスタンスプロファイルARNをコピーします。

databricksにログインして
右側の人間マークからdatabricks adminコンソールに入る、

Instance Profileに移動、

Add Instance Profileをクリック。

Instance Profile ARNに先ほどコピーしたIAMロールインスタンスプロファイルARNを貼り付けてAddをクリック。
その下の2つの項目に関しては今回はチェックしないで進めたいと思います。

6. インスタンスプロファイルを使用してクラスタを立ち上げる

先ほど作成したインスタンスプロファイルを使用してクラスターの立ち上げを行います。
すでに作成済みもしくは新しいクラスタのページに移動します。
Advanced Optionsをクリックして項目を表示させると、一番下にInstance Profileを記入する欄がありますのでクリック
先ほど設定したInstance Profileがあると思うので、それを設定してクラスターを立ち上げます。

7. ノートブックから今回設定したS3へのアクセスを確認する

新しくノートブックを開きます。
名前はなんでもOKで、言語はPython、クラスタはインスタンスプロファイルを設定したものを選択してください。
ノートブックの画面を開いたら下記を実行します。s3-bucket-nameは今回のターゲットS3バケット名を記入します。

dbutils.fs.ls("s3a://s3-bucket-name/")

このようにターゲットS3バケットの中身が表示されたら無事今回の作業がうまくいっていることになります。
(この例ではターゲットS3バケット内にsampleとsample2という2つのフォルダを入れているのでこのような結果表示になっています。)

注)ターゲットS3バケットが空の状態でスクリプトを実行すると対象のディレクトリがありませんという内容のエラーを吐くので、必ずフォルダもしくはファイルを最低1つ入れた状態にしてください。

終わりに

以上がdatabricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~でした。
今回の内容を活用して、ぜひご自身の目的に合ったセキュアなdatabricks環境構築に取り組んでみてください。
最後までお読みいただきありがとうございました。
本記事がどなたかのお役に立てていれば幸いです。

※本内容はこちらの公式ドキュメントを参考にしております。
https://docs.databricks.com/administration-guide/cloud-configurations/aws/instance-profiles.html