概要
Databricks Unity Catalog の一機能である volumes 利用時に Azure Storage にファイヤーウォールを設定した際には次のような制約がある旨が記載されており、どういった制約となるかの検証結果を共有します。検証結果から、Data Explorer のVolume UI にて、GUI によりアップロードとダウンロードができないという制約があることを確認できました。クラスターから Azure Storage のファイルの読み込みや書き込みは想定通りに実施できました。
You cannot upload or download files for volumes backed by Azure storage accounts configured with Azure Firewall or Private Link.
引用元:Create volumes - Azure Databricks | Microsoft Learn
Azure Firewall や Private Link で構成された Azure ストレージ アカウントでバックアップされたボリュームに対しては、ファイルのアップロードやダウンロードはできません。
上記の翻訳
事前準備
1. Azure Storage にファイヤーウォールを設定
Azure Storage にて次のファイヤーウォール設定を有効にします。
- Databricks アクセスコネクターからのアクセス(下記画像のリソース インスタンスの箇所)
- VNet インジェクション先仮想ネットワークのサブネットからのアクセス(下記画像の仮想ネットワークの箇所)
2. 外部ロケーションの作成
Data Explorer にて、ファイヤーウォールを設定したストレージの外部ロケーションを作成します。
3. 検証用カタログ、スキーマ、および、 Volume を作成
検証に利用するカタログ、スキーマ、および、 Volume を作成します。
%sql
CREATE CATALOG IF NOT EXISTS upload_ui;
CREATE SCHEMA IF NOT EXISTS upload_ui.schema_01;
DROP VOLUME IF EXISTS upload_ui.schema_01.volumes_01;
CREATE EXTERNAL VOLUME upload_ui.schema_01.volumes_01
LOCATION 'abfss://external@dbuce.dfs.core.windows.net/volumes';
動作検証
1. Azure Storage へファイルの書き込み
次のコードの実行結果から、ファイルの書き込みが実施できることを確認できました。
dbutils.fs.mkdirs('/Volumes/upload_ui/schema_01/volumes_01/tpch')
# dbfs 上のファイルをストレージにコピー
dbutils.fs.cp(
"dbfs:/databricks-datasets/tpch/README.md",
"/Volumes/upload_ui/schema_01/volumes_01/tpch/README.md",
)
# ファイルを表示
print(dbutils.fs.head("/Volumes/upload_ui/schema_01/volumes_01/tpch/README.md"))
2. Azure Storage からファイルの取得
次のコードの実行結果から、ファイルの取得が実施できることを確認できました。
# ストレージ上のファイルから dbfs をにコピー
dbutils.fs.cp(
"/Volumes/upload_ui/schema_01/volumes_01/tpch/README.md",
"dbfs:/FileStore/test/README.md",
True,
)
# ファイルを表示
print(dbutils.fs.head("dbfs:/FileStore/test/README.md"))
3.Volume UI の検証
次の記事に記載されている Volume UI にて、アップロードとダウンロードの動作を確認しましたが、いずれも想定通りに動作しませんでした。
Data Exlorer にて、volume にファイルをアップロードしようとすると、次のようなエラーが発生しました。
An error occurred while uploading. Please try again
Data Exlorer にて、volume にファイルをダウンロードロードしようとすると、ブラウザーにて次のようなエラーが発生しました。
ダウンロードできませんでした - 問題が発生しました。もう一度お試しになるか、お客様の組織に問い合わせてください。