Cloudflare R2の外部ロケーションに接続する
このページでは、Cloudflare R2の外部ロケーションに接続する方法について説明します。接続後、Unity Catalog を使用してこれらの R2 オブジェクトへのアクセスを管理できます。
Cloudflare R2 パスに正常に接続するには、2 つの Unity Catalog セキュリティ保護可能なオブジェクトが必要です。1つ目は ストレージ資格情報で、R2の場所へのアクセスを許可するR2 API トークンを指定します。 このストレージ認証情報は、2 番目の必須オブジェクトである 外部ロケーションで、R2 ストレージの場所へのパスと、その場所へのアクセスに必要な認証情報を定義します。
必要条件
-
Unity Catalogが有効化されたDatabricksワークスペース
-
Databricks Runtime 14.3 以降、または SQLwarehouse 2024.15 以降
エラーメッセージが表示された場合
No FileSystem for scheme "r2”
、コンピュートはサポートされていないバージョンである可能性があります。 -
A Cloudflare アカウント. https://dash.cloudflare.com/sign-up を参照してください。
-
Cloudflare R2管理者ロール。Cloudflare ロールのドキュメントを参照してください。
-
CREATE STORAGE CREDENTIAL
ワークスペースにアタッチされている Unity Catalog メタストアに対するCREATE EXTERNAL LOCATION
特権。アカウント 管理者とメタストア管理者は、 デフォルト。
ステップ 1: R2 バケットを設定する
-
Cloudflare R2バケットを作成します。
CloudflareダッシュボードまたはCloudflare Wranglerツールを使用できます。
Cloudflare R2の「はじめに」のドキュメントまたはWranglerのドキュメントを参照してください。
-
R2 API トークンを作成し、バケットに適用します。
Cloudflare R2 API認証のドキュメントを参照してください。
次のトークン プロパティを設定します。
-
権限 : オブジェクトの読み取りと書き込み。
この権限は、「 Cloudflare R2レプリカを使用するか、ストレージをR2に移行する」で説明されているように、R2ストレージをレプリケーションターゲットとして使用するときに必要な読み取りおよび書き込みアクセスを付与します。
Databricks から R2 バケットへの読み取り専用アクセスを適用する場合は、代わりに読み取りアクセスのみを許可するトークンを作成できます。ただし、ストレージ資格情報を読み取り専用としてマークでき、このアクセス許可によって付与された書き込みアクセスは無視されるため、これは不要な場合があります。
-
(オプション)TTL : バケットデータをデータ受信者と共有する期間。
-
(オプション)クライアントIPアドレスフィルタリング : ネットワークアクセスを指定した受信者のIPアドレスに制限する場合に選択します。このオプションを有効にする場合は、受信者の IP アドレスを指定し、ワークスペース リージョンの Databricks コントロール プレーン NAT IP アドレスを許可リストに登録する必要があります。
「 Databricks コントロール プレーンからの送信 IP」を参照してください。
-
-
R2 API トークン値をコピーします。
-
アクセスキーID
-
シークレットアクセスキー
-
トークン値は一度だけ表示されます。
- R2ホームページで、 アカウントの詳細 に移動し、R2アカウントIDをコピーします。
ステップ 2: ストレージ資格情報を作成する
-
Databricks で、ワークスペースにログインします。
-
[
カタログ] をクリックします。
-
[ クイック アクセス ] ページで、[ 外部データ> ] ボタンをクリックし、[ 資格情報] タブに移動して、[ 資格情報の作成 ] を選択します。
-
[ ストレージ資格情報 ] を選択します。
-
Cloudflare API トークン の 資格情報タイプ を選択します。
-
認証情報の名前と、R2 バケットの設定時にコピーした次の値を入力します。
- アカウントID
- アクセスキーID
- シークレットアクセスキー
-
(オプション)このストレージ資格情報を使用する外部ロケーションへの読み取り専用アクセス権をユーザーに付与する場合は、[ 詳細オプション ]で[ 読み取り専用 ]を選択します。
「Cloudflare R2 レプリカを使用するか、ストレージを R2 に移行する」で説明されているように、ストレージ認証情報を使用してレプリケーションターゲットとして使用している R2 ストレージにアクセスする場合は、このオプションを選択しないでください。
詳細については、「 ストレージ資格情報を読み取り専用としてマークする」を参照してください。
-
作成 をクリックします。
-
[ ストレージ資格情報が作成されました ]ダイアログで、[ 外部ID ]をコピーします。
-
(オプション)ストレージ資格情報を特定のワークスペースにバインドします。
デフォルトでは、ストレージ資格情報は、メタストアに接続されている任意のワークスペースの任意の特権ユーザーが使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 「 特定のワークスペースへのストレージ資格情報の割り当て」を参照してください。
ステップ 3: 外部ロケーションを作成する
外部ロケーションを作成するには、グラフィカル UI を使用する場合はカタログ エクスプローラーを使用し、プログラムによる作成を使用する場合は SQL を使用します。
オプション 1: カタログ エクスプローラを使用して外部ロケーションを作成する
-
メタストアにアタッチされているワークスペースにログインします。
-
サイドバーで、「
カタログ 」をクリックします。
-
クイック アクセス ページで、 外部データ > ボタンをクリックし、 外部ロケーション タブに移動して、 外部ロケーションの作成 をクリックします。
-
[ 新しい外部ロケーションの作成 ]ダイアログで、[ 手動 ]をクリックし、[ 次へ ]をクリックします。
AWSクイックスタートオプションを使用して、ルートの外部ロケーションを作成することはできませんDBFS。
-
[ 新しい外部ロケーションを手動で作成 ] ダイアログで、 外部ロケーション名 を入力します。
-
[ ストレージの種類 ] で [ R2 ] を選択します。
-
[ URL ] にパスを入力します。たとえば、
r2://my-bucket@my-account-id.r2.cloudflarestorage.com
です。 -
[ ストレージ資格情報 ] で、外部ロケーションへのアクセスを許可するストレージ資格情報を選択します。
-
(オプション)ユーザに外部ロケーションへの読み取り専用アクセス権を付与する場合は、[ 詳細オプション] をクリックし、[ 読み取り専用の使用に制限] を選択します。この設定は後で変更できます。詳細については、 外部ロケーションを読み取り専用としてマークする を参照してください。
-
(オプション)外部ロケーションがレガシーワークロードの移行を目的としている場合は、[ 詳細オプション ] をクリックし、 フォールバックモード を有効にします。
外部 ロケーションでフォールバック モードを有効にするを参照してください。
-
作成 をクリックします。
-
(オプション)外部ロケーションを特定のワークスペースにバインドします。
デフォルトでは、すべての特権ユーザーは、メタストアに接続されている任意のワークスペースで外部ロケーションを使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 「 特定のワークスペースへの外部ロケーションの割り当て」を参照してください。
-
[ 権限] タブに移動して、外部ロケーションを使用する権限を付与します。
外部ロケーションを使用するには、次の権限を付与する必要があります。
-
外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
CREATE MANAGED LOCATION
特権を付与します。 -
外部テーブルまたはボリュームを作成するには、
CREATE EXTERNAL TABLE
またはCREATE EXTERNAL VOLUME
を付与します。
- 付与 をクリックします。
- 「
<external location>
に付与 」ダイアログで、[ プリンシパル ]フィールドでユーザー、グループ、またはサービスプリンシパルを選択し、付与する権限を選択します。 - 付与 をクリックします。
-
オプション 2: SQL を使用して外部ロケーションを作成する
SQLを使用して外部ロケーションを作成するには、ノートブックまたはSQLクエリエディタで次のコマンドを実行します。プレースホルダの値を置き換えます。
<location-name>
: 外部ロケーションの名前。ハイフン (-
) などの特殊文字が含まれているlocation_name
場合は、バッククォート (<bucket-path>
:この外部ロケーションがアクセスを許可するクラウドテナント内のパス。 たとえば、r2://my-bucket@my-account-id.r2.cloudflarestorage.com
。<storage-credential-name>
: バケットからの読み取りとバケットへの書き込みを承認するストレージ認証情報の名前。ストレージ資格情報名にハイフン (-
) などの特殊文字が含まれている場合は、バッククォート (
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
外部ロケーションへのアクセスを特定のワークスペースに制限する場合は、アカウント (ワークスペース バインディングまたは外部ロケーション分離とも呼ばれます) は、「 特定のワークスペースへの外部ロケーションの割り当て」を参照してください。