クラウドストレージをSAP Databricksに接続するための外部ロケーションを作成する
この記事では、 Unity Catalog で外部ロケーションを設定してクラウド ストレージを SAP Databricksに接続する方法について説明します。
データ損失を防ぐために、SAP Databricks では外部ロケーションを読み取り専用にする必要があります。
外部ロケーション Unity Catalog ストレージの資格情報をクラウドオブジェクトストレージ コンテナーに関連付けます。 外部ロケーションは、カタログおよびスキーマのマネージドストレージ・ロケーションの定義、外部テーブル・外部ボリュームのロケーションの定義に使用されます。
AWS S3 バケット内のストレージを参照する外部ロケーションを作成できます。
始める前に
前提条件 :
-
SAP Databricks で外部ロケーションオブジェクトを作成する前に、外部ロケーションとして使用する S3 バケットを作成する必要があります。
- AWS CloudFormation テンプレートは S3 バケットのみをサポートします。
- ユーザーが読み取りおよび書き込みできる S3 バケットの名前には、ドット表記を使用できません (例:
incorrect.bucket.name.notation
)。 バケットの命名ガイドの詳細については、AWSバケットの命名規則を参照してください。 - S3別の メタストアで外部ロケーションとして既に定義されているパスをUnity Catalog で使用しないでください。1 つの外部 S3 場所にあるデータを複数のメタストアから安全に読み取ることができますが、複数のメタストアから同じ S3 場所への並列書き込みは、一貫性の問題が発生する可能性があります。
-
AWS CloudFormation テンプレートを使用して外部ロケーションを作成しない場合は、まず、クラウドストレージロケーションパスへのアクセス権を付与するストレージ認証情報を SAP Databricks で作成する必要があります。AWS ドキュメントの「 ストレージ認証情報を作成する」を参照してください。
AWS CloudFormation フローを使用すると、そのストレージ認証情報が作成されます。
権限の要件 :
- メタストアと、外部ロケーションで参照されるストレージ資格情報の両方に対する
CREATE EXTERNAL LOCATION
権限が必要です。 メタストア管理者は、デフォルトでメタストアにCREATE EXTERNAL LOCATION
を持っています。 - AWS CloudFormation テンプレートを使用している場合は、メタストアに対する
CREATE STORAGE CREDENTIAL
権限も必要です。メタストア管理者は、デフォルトでメタストアにCREATE STORAGE CREDENTIAL
を持っています。
AWS CloudFormation テンプレートを使用して S3 バケットの外部ロケーションを作成する
AWS CloudFormation テンプレートを使用して外部ロケーションを作成すると、Databricks は外部ロケーションを設定し、ストレージ認証情報を作成します。また、外部ロケーションを手動で作成 することもできますが、そのためには、最初に、外部ロケーションによって参照される IAMS3バケットへのアクセス権を付与する ロールと、そのIAM ロールを参照するストレージ認証情報を作成する必要があります。
権限と前提条件: 「始める前に」を参照してください。
外部ロケーションを作成するには:
-
メタストアにアタッチされているワークスペースにログインします。
-
「カタログ 」(Catalog) をクリックしてカタログエクスプローラーを開きます。
-
クイック アクセス ページで、 外部データ > ボタンをクリックし、 外部ロケーション タブに移動して、 外部ロケーションの作成 をクリックします。
-
[ 新しい外部ロケーションを作成 ] ダイアログで、[ AWSクイックスタート(推奨) ]を選択し、[ 次のページ ] をクリックします。
AWS クイックスタートでは、外部ロケーションが構成され、ストレージ資格情報が作成されます。 手動 オプションを使用する場合は、IAMロールを手動で作成し、Databricksで S3バケットへのアクセス権を付与する ストレージ認証情報を自分で作成する必要があります。
-
クイックスタートで外部ロケーションを作成 ダイアログで、 バケット名 フィールドにS3バケットへのパスを入力します。
-
Generate new token をクリックして、 Databricks と AWS アカウント間の認証に使用する個人用アクセストークンを生成します。
-
トークンをコピーし、 クイックスタートで起動 をクリックします。
-
起動する AWS CloudFormation テンプレート ( クイック作成スタック というラベル) で、トークンを Databricksアカウント資格情報 フィールドに貼り付けます。
-
ページ下部の利用規約に同意します ( AWS CloudFormation がカスタム名で IAM リソースを作成する可能性があることを認めます )。
-
スタックを作成 をクリックします。
CloudFormation テンプレートが Databricksで外部ロケーションオブジェクトの作成を完了するまでに数分かかる場合があります。
-
Databricks ワークスペースに戻り、[ カタログ ]をクリックして カタログエクスプローラー を開きます。
-
クイック アクセス ページで、 外部データ > ボタンをクリックして外部 ロケーション タブに移動します。
-
新しい外部ロケーションが作成されたことを確認します。
自動的に生成される外部ロケーションは、
db_s3_external_databricks-S3-ingest-<id>
という命名構文を使用します。 -
(オプション)外部ロケーションを特定のワークスペースにバインドします。
デフォルトにより、特権ユーザーは、メタストアにアタッチされた任意のワークスペース上の外部ロケーションを使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動してワークスペースを割り当てます。 (オプション)特定のワークスペースに外部ロケーションを割り当てるを参照してください。
-
外部ロケーションの使用を許可します。
外部ロケーションを誰でも使用できるようにするには、次の権限を付与する必要があります。
- 外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
CREATE MANAGED LOCATION
特権を付与します。 - 外部テーブルまたはボリュームを作成するには、
CREATE EXTERNAL TABLE
またはCREATE EXTERNAL VOLUME
を付与します。
カタログエクスプローラーを使用してアクセス権を付与するには
- 外部ロケーション名をクリックして、詳細ペインを開きます。
- アクセス許可 タブで、 許可 をクリックします。
- 「
<external location>
に付与 」ダイアログで、[ プリンシパル ]フィールドでユーザー、グループ、またはサービスプリンシパルを選択し、付与する権限を選択します。 - 付与 をクリックします。
- 外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
(オプション)特定のワークスペースに外部ロケーションを割り当てる
By デフォルト, 外部ロケーションは、メタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーにその外部ロケーションに対する特権 ( READ FILES
など) が付与されている場合、メタストアにアタッチされた任意のワークスペースからその特権を行使できます。 ワークスペースを使用してユーザーデータへのアクセスを分離する場合は、特定のワークスペースからのみ外部ロケーションへのアクセスを許可することができます。 この機能は、ワークスペース バインディングまたは外部ロケーション分離と呼ばれます。
外部ロケーションを特定のワークスペースにバインドする一般的な使用例には、次のようなものがあります。
- 本番運用データを含む外部ロケーションに対する
CREATE EXTERNAL TABLE
権限を持つデータエンジニアが、本番運用ワークスペースでのみそのロケーションに外部テーブルを作成できるようにします。 - 機密データを含む外部ロケーションに対する
READ FILES
権限を持つデータエンジニアが、特定のワークスペースのみを使用してそのデータにアクセスできるようにします。
ワークスペース バインディングは、外部ロケーションに対する特権が行使された時点で参照されます。 たとえば、ユーザーが myWorkspace
ワークスペースからステートメント example を発行して外部テーブルを作成した場合、通常のユーザー権限チェックに加えて、次のワークスペースバインディングチェックが実行されます。
- 外部ロケーションはパスを覆っていますか
myWorkspace
- カタログ
myCat
アクセス・レベルがRead & Write
のmyWorkspace
にバインドされていますか?
その後、外部ロケーションが myWorkspace
からバインド解除された場合、外部テーブルは引き続き機能します。
また、この機能を使用すると、中央のワークスペースからカタログを取り込み、カタログ バインドを使用して他のワークスペースでカタログを使用できるようにすることもできます。また、外部ロケーションを他のワークスペースで使用できるようにする必要はありません。
外部ロケーションを 1 つ以上のワークスペースにバインドする
特定のワークスペースに外部ロケーションを割り当てるには、Catalog Explorer を使用します。
必要なアクセス許可 : Metastore 管理者、外部ロケーションの所有者、または外部ロケーションの MANAGE
。
メタストアの管理者は、Catalog Explorer を使用してメタストア内のすべての外部ロケーションを表示でき、外部ロケーションの所有者は、外部ロケーションが現在のワークスペースに割り当てられているかどうかに関係なく、メタストア内で所有するすべての外部ロケーションを表示できます。 ワークスペースに割り当てられていない外部ロケーションはグレー表示されます。
-
メタストアにリンクされているワークスペースにログインします。
-
サイドバーで、「
カタログ 」をクリックします。
-
クイック アクセス ページで、 外部データ > ボタンをクリックして外部 ロケーション タブに移動します。
-
外部ロケーションを選択し、 ワークスペース タブに移動します。
-
[ ワークスペース ] タブで、[ すべてのワークスペースがアクセス可能] チェックボックスをオフにします。
外部ロケーションがすでに 1 つ以上のワークスペースにバインドされている場合、このチェックボックスはすでにオフになっています。
-
[ ワークスペースに割り当てる ] をクリックし、割り当てるワークスペースを入力または検索します。
アクセス権を取り消すには、[ ワークスペース ] タブに移動し、ワークスペースを選択して、[ 取り消し ] をクリックします。すべてのワークスペースからのアクセスを許可するには、[ すべてのワークスペースがアクセス可能 ] チェックボックスをオンにします。