Azure Private LinkとSnowflakeOpen Catalog¶
このトピックでは、インバウンドプライベート接続を使用して、SnowflakeOpen Catalogアカウントをクエリエンジンに直接接続するようにAzure Private Linkを構成する方法について説明します。
前提条件¶
Snowflake Open CatalogアカウントがAzureでホストされている。
Open Catalogアカウントのプライベート接続 URL を使用して DNS サービスを構成するために必要な権限を持っている。
ステップ1:Open Catalogアカウント設定の取得¶
Azure Private Linkを使用してOpen Catalogへのアクセスを構成するために、次の設定を取得します。
Snowflakeオープンカタログにサインインします。
ナビゲーションメニューで 設定 を選択します。
設定ページで、次の設定の値をテキストエディターにコピーします。
PrivateLinkアカウントURL
リージョンレス PrivateLink アカウント URL
PrivateLink OCSP URL
リージョンレス PrivateLink OCSP URL
Private Linkサービス ID
これらの値は、Azure Private Linkを使用したOpen Catalogへのアクセスの構成、Azure Private Linkを介したOpen Catalogへの接続を実行するときに貼り付けます。
各設定の説明については、SnowflakeドキュメントのSYSTEM$GET_PRIVATELINK_CONFIG システム関数の戻り値をご参照ください。このトピックでは、アカウント設定の名前は JSON format。
注釈
該当する場合、説明はSnowflakeアカウントを参照していますが、値は実際にはSnowflake Open Catalogアカウント用であることに注意してください。たとえば、 privatelink-account-url
は です URL SnowflakeOpen Catalogアカウントの。
オプション:でこれらの値を取得するには JSON 形式、Snowflake の作成 CLI Open Catalogの接続 を呼び出します。 SYSTEM$GET_PRIVATELINK_CONFIG システム関数。
ステップ2:Azure Private Linkを使用したOpen Catalogへのアクセスの構成¶
注意
このセクションでは、 VNet 環境を設定するためのOpen Catalog固有の詳細のみを説明します。また、必要なファイアウォールの更新、および DNS 記録の実際の構成に対して、Snowflakeは責任を負いません。これらの構成タスクのいずれかで問題が発生した場合は、Microsoftのサポートに直接お問い合わせください。
このセクションでは、Azure Private Linkを使用して VNet をOpen Catalog VNet に接続する方法について説明します。
手順を完了するには、Azure CLI またはAzure PowerShell を使用する必要があります。インストールのヘルプについては、MicrosoftドキュメントのAzure CLIまたはAzure PowerShellをご参照ください。
Azure Private Linkを使用してSnowflake Open Catalogに接続を開始した後、Azure Portalで接続の承認状態を確認できます。
プライベートエンドポイントを作成する¶
注釈
すでにSnowflakeアカウントのプライベートエンドポイントを作成し、そのアカウントがOpen Catalogアカウントと同じ展開にある場合は、Open Catalogアカウントの新しいプライベートエンドポイントを作成する必要はありません。オプションで、このステップを省略できます。
Azureアカウントの詳細を取得します。次の例では、Azure CLI の
az account list
コマンドを使用しています。Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
Azure Portalで、Private Link を検索し、結果の Private Link を選択します。
プライベートエンドポイント をクリックし、追加 をクリックします。
基本 タブで、環境の サブスクリプション、リソースグループ、名前、リージョン フィールドを入力し、次へ:リソースをクリックします。
リソース タブの 接続方法 で、リソース ID またはエイリアスごとにAzureリソースに接続するを選択します。
リソース ID またはエイリアスで、プライベート接続用Open Catalogアカウント設定を取得するで取得した
Private Link Service ID
の値を入力します。エイリアス値に関するエラーメッセージが表示された場合は、Snowflakeサポートにリソース ID 値について問い合わせ、その値を使用してこの手順を繰り返します。
プライベートエンドポイントが承認されると、Private Link Centerページのプライベートエンドポイントセクションの CONNECTIONSTATE には、値 保留中 が表示されます。次のプロシージャで認証が完了すると、この値は 承認済み に変更されます。
インバウンドプライベート接続を有効にする¶
この手順では、Open CatalogアカウントのAzure Private Linkを有効にします。この構成により、クエリエンジンはプライベート接続を介してOpen Catalogに接続できます。プライベートエンドポイントリソース ID、サブスクリプション ID、およびフェデレーションユーザーのアクセス認証情報を含むフェデレーショントークン値が必要です。
これらの値を取得するには、Azure CLI で次のコマンドを実行します。
プライベートエンドポイントリソース ID を取得するには、以下のコマンドを実行し、値をテキストエディターにコピーします。
az network private-endpoint show
サブスクリプション ID を取得するには、次のコマンドを実行し、出力の SubscriptionID 列の値をメモします。
az account list --output table
フェデレーション認証済みトークン値を取得するには、次のコマンドを実行し、accessToken値をテキストエディターにコピーします。
az account get-access-token --subscription <SubscriptionID>
ここで、
SubscriptionID
は、前の手順で取得した一意の識別子です。
重要
Azureアクセストークンを生成するユーザーは、サブスクリプションに対する読み取りアクセス権限を持っている必要があります。最小の権限はMicrosoft.Subscription/subscriptions/acceptOwnershipStatus/readです。 または、既定のロール
Reader
により、粒度の荒い権限が付与されます。accessToken
値は機密情報であり、パスワード値のように扱う必要があります。この値は、共有しないでください。Snowflakeサポートに連絡する必要がある場合は、サポートチケットを作成する前に、コマンドと URLs からアクセストークンを編集します。
Snowflakeオープンカタログにサインインします。
ナビゲーションメニューで 設定 を選択します。
承認 を選択します。
Private Linkを承認ダイアログで、アカウントのプライベート接続を有効にします。
IDには、テキストエディターにコピーしたプライベートエンドポイントリソース ID を入力します。
フェデレーショントークン には、テキストエディターにコピーしたフェデレーショントークン値を入力します。
保存 を選択します。
DNS を設定する¶
Open Catalogへのリクエストすべては、プライベートエンドポイントを介してルーティングする必要があります。Open Catalogアカウントと OCSP URLs プライベートエンドポイントのプライベート IP アドレスに解決するには、DNS を更新します。
エンドポイント IP アドレスを取得するには、Azureポータルの検索バーに、作成したプライベートエンドポイントの名前を入力します。
ネットワークインターフェイスの結果を選択します。
プライベート IP アドレスの値をコピーします。
DNS を構成してプライベート接続用Open Catalogアカウント設定から適切なエンドポイント値がプライベート IP アドレスに解決されるようにします。
ステップ3:Azure Private Linkを介したOpen Catalogへの接続¶
サービス接続を登録し、Azure Private Linkを介してクエリエンジンをOpen Catalogに接続するには、次のコードを使用します。
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
パラメーター¶
注釈
を設定していることを確認してください DNS に指定した値と一致する サービス <open_catalog_account_identifier>
.
パラメーター |
説明 |
---|---|
|
接続先のカタログ名を指定します。 |
|
外部クラウドストレージプロバイダーのMaven座標を指定します。
|
|
サービスプリンシパルが使用するクライアント ID を指定します。 |
|
サービスプリンシパルが使用するクライアントシークレットを指定します。 |
|
AWS PrivateLink またはAzure Private Linkを使用して、Snowflakeアカウントに接続するための URL を指定します。
|
|
サービスプリンシパルに付与されるプリンシパルロールを指定します。 |
ステップ4(オプション):Snowflakeのカタログ統合を作成する¶
Snowflakeを使用してOpen Catalogの管理テーブルをクエリする場合は、プライベート IP アドレスを使用するSnowflakeのカタログを作成してください。このカタログ統合を作成するには、SnowflakeアカウントがOpen Catalogアカウントと同じ展開にある必要があります。
例については、 例:をご参照ください。Snowflakeドキュメントのプライベート IP アドレス <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_を使用するカタログ統合。
注釈
Snowflake Open Catalog UI のプライベート接続を構成することもできます。この構成は、Open Catalogアカウントのプライベート接続の構成と組み合わせて、パブリックのインターネットではなく、プライベート接続を介してOpen Catalog UI にアクセスできます。
このアクセスを構成するには、SnowflakeOpen Catalog UI のプライベート接続の構成をご参照ください。