データアクセス構成
この記事では、サーバレス コンピュートと SQLウェアハウスに関するワークスペース管理者の設定について説明します。
Databricks は、 Unity Catalog ボリュームまたは外部ロケーションを使用してクラウド オブジェクト ストレージに接続することをお勧めします。 Unity Catalog は、アカウント内の複数のワークスペースにわたるデータアクセスを一元的に管理および監査するための場所を提供することで、データのセキュリティとガバナンスを簡素化します。 「Unity Catalogとは」および「外部ロケーションの使用に関する推奨事項」を参照してください。
これらの設定を変更すると、実行中のすべての SQLウェアハウス ワークロードとサーバレス コンピュート ワークロードが再起動されます。
必要条件
- これらの設定を構成するには、Databricks ワークスペース管理者である必要があります。
サーバレス コンピュートと SQLウェアハウスをインスタンスプロファイルを使用するように構成する
この設定を使用してインスタンスプロファイルを選択すると SQLワークスペース内のすべてのウェアハウスとワークスペースのすべてのサーバレス コンピュート リソースがインスタンスプロファイルを使用して AWS ストレージにアクセスできるようになります。 インスタンスプロファイルに関する情報については、 チュートリアル: インスタンスプロファイルを使用して S3 アクセスを構成するを参照してください。
ワークスペース内のすべてのウェアハウスとサーバレス コンピュートで使用するインスタンスプロファイルを設定するには:
- ワークスペースの上部バーでユーザー名をクリックし、ドロップダウンから [ 設定 ] を選択します。
- 「 コンピュート 」タブをクリックします。
- SQL「 ウェアハウス」と「サーバレス コンピュート 」の横にある 「管理 」をクリックします。
- インスタンスプロファイル ドロップダウンで、インスタンスプロファイルを選択します。
- [変更を保存] をクリックします。
この設定を更新すると、すべてのウェアハウスが再起動します。 ジョブがサーバレス コンピュートを使用している場合、ジョブは最大 5 分間実行されてから終了し、再試行されます。 ノートブックでサーバレス コンピュートを使用している場合は、5分間クエリの実行を続行できます。 5 分後、処理中のクエリは、課金を発生させることなく短時間実行を継続しているように見え、コンピュートをデタッチしてから再度アタッチして再試行するように指示するエラー メッセージが表示されて失敗します。
- ユーザーがインスタンスプロファイルを使用する権限を持っていない場合、ユーザーが作成したすべての SQLウェアハウスの起動に失敗します。
- インスタンスプロファイルが有効でない場合、すべての SQLウェアハウスが異常になります。
Databricks Terraformプロバイダーとdatabricks_sql_global_configを使用してインスタンスプロファイルを構成することもできます。
SQLウェアハウスのデータ アクセス プロパティの構成
すべてのウェアハウスをデータ アクセス プロパティで構成するには (レガシ Hive metastoreの代わりに外部メタストアを使用する場合など)
-
ワークスペースの上部バーでユーザー名をクリックし、ドロップダウンから [ 設定 ] を選択します。
-
「 コンピュート 」タブをクリックします。
-
SQLウェアハウス の横にある「 管理 」をクリックします。
-
[データ アクセス構成 ] テキスト ボックスで、メタストア プロパティを含むキーと値のペアを指定します。
シークレット値を Spark に公開せずに Spark 設定プロパティをシークレットの値に設定するには、値を {{secrets/<secret-scope>/<secret-name>}}
に設定します。 <secret-scope>
をシークレットスコープに、<secret-name>
をシークレット名に置き換えます。値は {{secrets/
and end with }}
で始まる必要があります。 この構文の詳細については、「 シークレットの管理」を参照してください。
- [ 保存 ]をクリックします。
Databricks Terraform プロバイダーと databricks_sql_global_config を使用して、データ アクセス プロパティを構成することもできます。
サポートされているプロパティ
-
*
が末尾にあるエントリの場合、その接頭辞内のすべてのプロパティがサポートされます。たとえば、
spark.sql.hive.metastore.*
はspark.sql.hive.metastore.jars
とspark.sql.hive.metastore.version
の両方がサポートされていることを示し、spark.sql.hive.metastore
で始まるその他のプロパティはサポートされています。 -
値に機密情報が含まれているプロパティの場合は、機密情報を シークレット に保存し、構文
secrets/<secret-scope>/<secret-name>
を使用してプロパティの値をシークレット名に設定できます。
SQLウェアハウスでは、次のプロパティがサポートされています。
spark.databricks.hive.metastore.glueCatalog.enabled
spark.databricks.delta.catalog.update.enabled false
spark.sql.hive.metastore.*
(spark.sql.hive.metastore.jars
とspark.sql.hive.metastore.jars.path
はサーバレス SQLウェアハウスではサポートされていません。spark.sql.warehouse.dir
spark.hadoop.aws.region
spark.hadoop.datanucleus.*
spark.hadoop.fs.*
spark.hadoop.hive.*
spark.hadoop.javax.jdo.option.*
spark.hive.*
spark.hadoop.aws.glue.*
これらのプロパティを設定する方法の詳細については、「 外部 Hive metastore と AWS Glue データ カタログ」を参照してください。
AWSサーバレスSQL ウェアハウスで使用する インスタンスプロファイルを確認または設定します
Databricks SQLで既にインスタンスプロファイルを使用している場合、インスタンスプロファイルに関連付けられたロールには、サーバーレスSQLウェアハウスが使用できるようにDatabricksサーバーレスコンピューティングの信頼関係ステートメントが必要となります。
インスタンスプロファイルが作成された方法と時期によっては、すでに信頼関係がある可能性があるため、ロールを変更する必要がない場合があります。 インスタンスプロファイルが次の方法で作成された場合、信頼関係ステートメントが含まれている可能性があります。
- 2022年6月24日以降、インスタンスプロファイルは、AWSクイックスタートを使用したDatabricksワークスペース作成の一部として作成されました。
- 2022 年 6 月 24 日以降、組織内の誰かが Databricks 記事の手順に従って 、インスタンスプロファイルを手動で作成しました。
このセクションでは、インスタンスプロファイルに関連付けられているロールに信頼関係ステートメントがあることを 確認または更新する 方法について説明します。これにより、サーバーレスSQLウェアハウスがロールを用いてS3バケットにアクセスできるようになります。
これらの手順を実行するには、 Databricks ワークスペース管理者であり、ワークスペースが Databricks SQLに使用しているインスタンスプロファイルを確認する必要があります。 また、ロールの信頼関係ポリシーを確認したり、必要な変更を加えたりするには、AWS アカウント管理者である必要があります。 これらの管理者タイプの両方に対応していない場合は、組織内の適切な管理者に連絡して、これらの手順を完了してください。
-
管理設定ページで 、 コンピュート タブをクリックし、 SQLウェアハウス の横にある[管理] をクリックします。
-
[ データセキュリティ ] セクションの [ インスタンスプロファイル ] フィールドをご覧ください。Databricks SQLのAWSインスタンスプロファイルを使用してルートバケット以外のAWS S3バケットに接続するようにワークスペースが設定されているかどうかを確認してください。
- インスタンスプロファイルを使用する場合、その名前は インスタンスプロファイル フィールドに表示されます。 次のステップのためにメモしておきます。
- フィールド値が None の場合、ワークスペースのルートバケット以外の S3 バケットにアクセスするために インスタンスプロファイル を使用していません。 セットアップが完了しました。
-
インスタンスプロファイル名が関連付けられたロール名と一致するかどうかを確認します。
-
AWSコンソールで、IAMサービスの [ロール] タブに移動します。アカウント内のすべての IAM ロールが一覧表示されます。
-
このセクションで前に見つけたインスタンスプロファイルDatabricks SQL フィールドの[ データセキュリティ]セクションの 管理設定で、インスタンスプロファイル名と一致する名前のロールをクリックします。
-
概要で、[ ロールARN ] フィールドと [ インスタンスプロファイルARN ] フィールドを探します。
-
これら 2 つのフィールドの末尾の最後のスラッシュの後に一致する名前があるかどうかを確認します。例えば:
-
-
前の手順でロール名 (ロール ARNプロファイルの最後のスラッシュの後のテキスト ) とインスタンスプロファイル名 (インスタンスプロファイル ARNの最後のスラッシュの後のテキスト) が一致しないと判断した場合は、インスタンスプロファイルの登録を編集してIAMロールARNを指定します。
- インスタンスプロファイルを編集するには、[ インスタンスプロファイル ] フィールドの下にある [ 構成 ] ボタンをクリックします。
- インスタンスプロファイルの名前をクリックします。
- [ 編集 ] をクリックします。
- オプションの [ ロール ARN ] フィールドに、インスタンスプロファイルに関連付けられたロールのロールARNを貼り付けます。これは、ロール名がインスタンスプロファイル名と一致しない場合でも、インスタンスプロファイルがDatabricks SQLサーバーレスで動作することを可能にするための重要な手順です。
- [ 保存 ]をクリックします。
-
AWS コンソールで、信頼関係を確認または編集します。
-
AWS コンソールの IAM サービスの [ロール] タブで、変更するインスタンスプロファイルロールをクリックします。
-
[ 信頼関係 ] のタブをクリックします。
-
既存の信頼ポリシーを表示します。 ポリシーに以下の JSON ブロックがすでに含まれている場合、この手順は以前に完了しているため、次の手順は無視してかまいません。
-
[ 信頼ポリシーの編集 ] をクリックします。
-
既存の
Statement
配列で、既存の信頼ポリシーの末尾に次の JSON ブロックを追加します。 既存のポリシーを上書きしないことを確認します。JSON{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::790110701330:role/serverless-customer-resource-role"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": [
"databricks-serverless-<YOUR-WORKSPACE-ID1>",
"databricks-serverless-<YOUR-WORKSPACE-ID2>"
]
}
}
}ステートメントで変更する必要があるのは、ワークスペース ID だけです。
YOUR_WORKSPACE-ID
を、このロールを使用するワークスペースの 1 つ以上の Databricks ワークスペース ID に置き換えます。 ワークスペースの使用中にワークスペース ID を取得するには、URL を確認します。 たとえば、https://<databricks-instance>/?o=6280049833385130
では、o=
の後の数字がワークスペース ID です。ポリシーの原則は編集しないでください 。
Principal.AWS
フィールドはarn:aws:iam::790110701330:role/serverless-customer-resource-role
値を持ち続ける必要があります。これは、Databricksが管理するサーバーレスのコンピューティング・ロールを指します。 -
「 ポリシーの確認 」をクリックします。
-
[変更を保存] をクリックします。
-
インスタンスプロファイルが後で変更された場合は、これらのステップを繰り返して、インスタンスプロファイルのロールの信頼関係に必要な追加のステートメントが含まれていることを確認します。
トラブルシューティング
信頼関係が正しく構成されていない場合、クラスターは失敗し、「クラスターの作成要求が例外で失敗しました。例外INVALID_PARAMETER_VALUE: IAMロール <role-id> には必要な信頼関係がありません」というメッセージが表示されます。
このエラーが発生した場合は、ワークスペース ID が正しくないか、信頼ポリシーが正しいロールで正しく更新されていない可能性があります。
AWSサーバレスSQL ウェアハウスで使用する インスタンスプロファイルの確認または設定 の手順を慎重に実行して、信頼関係を更新します。
GlueサーバレスSQL ウェアハウスの メタストアの構成
AWS Glue メタストアを指定するか、データソース設定を追加する必要がある場合は、管理設定ページの [Data Access Configuration ] フィールドを更新します。
サーバーレスSQLウェアハウスは、デフォルトのDatabricksメタストアとAWS Glueをメタストアとしてサポートしていますが、外部のHiveメタストアはサポートしません。