この機能は、デフォルトではアカウントで有効になっていません。有効にするには、テクニカルサポートまたはカスタマーサクセス担当者にお問い合わせください。
このガイドでは、Unity Catalogのフェデレーションを使用して、Treasure AIが管理するGlue HMSカタログとIcebergテーブルをDatabricksと統合する方法を説明します。
Treasure AIアカウントにIcebergカタログのリソースをプロビジョニングした後、Glue HMSカタログをDatabricks Unity Catalogにフェデレーションできます。これにより、データをコピーせずに、Treasure AIが管理するIcebergテーブルをDatabricksから直接クエリできます。
この統合では、次のものを使用します。
- Glue HMSカタログにアクセスするためのサービス資格情報(service credential)
- Icebergテーブルのデータを格納するS3バケットにアクセスするためのストレージ資格情報(storage credential)
- Treasure AIのカタログをUnity Catalogにフェデレーションするための外部カタログ(foreign catalog)
- アカウントのIcebergカタログのリソースがプロビジョニング済みで、
activeの状態であること(Provision Resourcesを参照) - DatabricksのワークスペースとコンピュートでUnity Catalogが有効になっていること(Databricksのドキュメント)
認証の詳細とリージョン別のAPIエンドポイントについては、Use Iceberg Catalog Management APIを参照してください。
次の値は、Get Resource Statusエンドポイントから取得します。
curl "https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources" \
-H "Authorization: TD1 <admin_api_key>" \
-H "Accept: application/json"| レスポンスのフィールド | 用途 | 例 |
|---|---|---|
aws_region | AWSリージョン | us-east-1 |
aws_account_id | AWSアカウントID | 123456789012 |
iam_role_arn | IAMロールのARN | arn:aws:iam::123456789012:role/zcpo-hms-tenant-us01_td10000 |
external_location_url | 外部ロケーションのURL | s3://zcp-us01-td10000-a1b2c3d4/iceberg |
db_name | データベース名 | td10000_us01_export |
iam_role_arnに対して、サービス資格情報とストレージ資格情報を作成します。どちらの資格情報も、Treasure AIが提供する同じIAMロールを指定します。
- サービス資格情報:Glue HMSカタログへのアクセスに使用します。手順:Create service credentials
- ストレージ資格情報:S3バケットへのアクセスに使用します。手順:Give Databricks the IAM role details
資格情報を作成した後、Databricksに表示されるExternal IDを記録してください。次のステップで必要になります。
テーブル読み取り用IAMロールの信頼ポリシーを更新します。 このステップは、Databricksのドキュメントのこのステップに対応します。
ステップ1のExternal IDとIAMロールのARNを指定して、信頼ポリシー更新エンドポイントを呼び出します。
curl -X POST "https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources/reader_role/trust_policy" \
-H "Authorization: TD1 <admin_api_key>" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{
"service": "databricks",
"iam_principal_arns": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
"<iam_role_arn>"
],
"external_ids": ["<external_id_from_databricks>"]
}
]
}'External IDはIAMロールを保護します。正しいExternal IDが指定された場合にのみ、IAMロールを引き受け(assume)できます。 このIDはDatabricksが生成するため、資格情報を作成した後でなければわかりません。
iam_principal_arnsには、次の2つのIAMロールが必要です。
- Unity CatalogのIAMロール
- このIAMロール(つまり
<iam_role_arn>)- ロール自身を引き受けるために必要です
この更新は、信頼ポリシー全体を置き換えます。リーダーロールがすでに他の統合を信頼している場合は、上記のエントリーだけをPOSTせず、既存のポリシーにDatabricksのエントリーを追加してください。詳細はManage the Reader Role Trust Policyを参照してください。
このステップが完了するまで、カタログのフェデレーションは動作しません。Get Resource Statusエンドポイントをポーリングし、ステータスがactiveに戻るのを待ってから次に進んでください。
Create an external location for an S3 bucketの手順に従って、external_location_urlの外部ロケーションを作成します。
- ステップ1で作成したストレージ資格情報を使用します
- Databricksが、不足している権限(「Write」や「File Events Read」など)について警告する場合があります。この警告は無視して、外部ロケーションを強制的に作成できます。Treasure AIのリーダーロールは、設計上、読み取り専用です。
Databricksが自身のメタデータを格納するための、別のストレージ資格情報と外部ロケーションを作成します。手順:Create an external location for S3
このロケーションは、Databricksが外部Icebergテーブルを読み取るために内部で使用します。テーブルのデータは格納しません。
この外部ロケーションは、ステップ3の外部ロケーションとは別のものです。お客様自身のAWSアカウント(Databricksをデプロイしているアカウント)に、別のS3バケットとIAMロールを作成する必要があります。
Treasure AIのGlue HMSカタログへの接続と、そのカタログをUnity Catalogにフェデレーションするための外部カタログを作成します。手順:Create the connection (Glue HMS federation)
接続のパラメーター:
| パラメーター | 値 |
|---|---|
| AWS Region | Treasure AIのリソースのレスポンスにあるaws_region |
| AWS Account ID | Treasure AIのリソースのレスポンスにあるaws_account_id |
| Credentials | ステップ1で作成したサービス資格情報 |
外部カタログのパラメーター:
| パラメーター | 値 |
|---|---|
| Authorized paths | ステップ3で作成した外部ロケーション |
| Storage location | ステップ4で作成した外部ロケーション |
外部カタログを作成すると、DatabricksのCatalog Explorerに表示されます。
| 症状 | 考えられる原因 |
|---|---|
| クエリ時にアクセスが拒否される | IAMロールのARNまたはExternal IDが一致していません。ステップ2で登録した値を確認してください |
| 外部ロケーションの作成時に権限の警告が出る | 想定どおりの動作です。Treasure AIのリーダーロールは読み取り専用のため、ロケーションを強制的に作成してください |
- ステップ2の信頼ポリシーの更新は、全体の置き換えです。後から2つ目のDatabricksワークスペースや別の統合を追加する場合に既存のアクセスを失わないようにするには、Manage the Reader Role Trust Policyの読み取り・変更・書き込み(read-modify-write)の手順を使用してください。
- リーダーIAMロールは読み取り専用です。Databricksはテーブルをクエリできますが、Treasure AIが管理するS3バケット内のデータは変更できません。
- Database Management APIで作成したデータベースは、追加の設定なしで、外部カタログから自動的にアクセスできます。