AWS PrivateLinkとSnowflake Open Catalog¶
このトピックでは、インバウンドプライベート接続を使用して、Snowflake Open Catalogアカウントとクエリエンジンを直接接続するために AWS PrivateLink を構成する方法について説明します。
前提条件¶
Snowflake Open Catalogアカウントは AWS でホストされています。
Open Catalogアカウントのプライベート接続 URL を使用して AWS DNS サービスを構成するために必要な権限があります。構成については、Snowflake Communityの PrivateLink を介してSnowflakeにアクセスするための AWS DNS サービス(Route 53)の構成方法 をご参照ください。
ステップ1: AWS PrivateLink を有効化する¶
この手続きでは、Open Catalogアカウントの AWS PrivateLink を有効にします。この構成により、クエリエンジンはプライベート接続を介してOpen Catalogに接続できます。Amazon Web Services(AWS)アカウントの12桁の識別子と、フェデレーションユーザーのアクセス認証情報を含むフェデレーショントークンの値が必要です。
フェデレーショントークンの値を取得するには、 AWS CLI を使用して以下のコマンドを実行し、値をテキストエディターにコピーします。
aws sts get-federation-token --name sam
Snowflakeオープンカタログにサインインします。
ナビゲーションメニューで、 設定 を選択します。
承認 を選択します。
Private Linkの承認 ダイアログで、アカウントのプライベート接続を有効にします。
ID フィールドに、Amazon Web Services(AWS)アカウントの12桁の識別子を入力します。
フェデレーショントークン に、テキストエディターにコピーしたトークン値を入力します。
保存 を選択します。
ステップ3: Open Catalogアカウント設定の取得¶
後で VPC エンドポイントや VPC ネットワークを作成および構成するために必要になるこれらの設定を取得します。
Snowflakeオープンカタログにサインインします。
ナビゲーションメニューで、 設定 を選択します。
設定ページで、以下の設定の値をテキストエディターにコピーします。
PrivateLink アカウント URL
リージョンレス PrivateLink アカウント URL
PrivateLink OCSP URL
リージョンレス PrivateLink OCSP URL
VPCE サービス ID
これらの値は、 VPC エンドポイント(VPCE)の作成と構成、 VPC ネットワークの構成、および AWS PrivateLink を介したOpen Catalogへの接続の際に貼り付けます。
各設定の説明については、Snowflakeドキュメントの SYSTEM$GET_PRIVATELINK_CONFIG システム関数の戻り値 をご参照ください。このトピックでは、アカウント設定の名前は JSON 形式です。
注釈
該当する場合、説明はSnowflakeアカウントを指しますが、実際の値はSnowflake Open Catalogアカウントの値であることを忘れないでください。例えば、 privatelink-account-url
はSnowflake Open Catalogアカウントの URL です。
オプション: JSON 形式でこれらの値を取得するには、 Open Catalog用にSnowflake CLI 接続を作成し、 SYSTEM$GET_PRIVATELINK_CONFIG システム関数を呼び出します。
Snowflakeドキュメントでは、
privatelink-vpce-id
はOpen Catalogの VPCE サービス ID に対応しています。
ステップ4: VPC エンドポイントを作成および構成する¶
この手続きでは、 AWS VPC 環境に対応する VPC エンドポイント(VPCE)を作成し、構成します。
注釈
Snowflakeアカウント用の VPC エンドポイントを既に作成しており、そのアカウントがOpen Catalogアカウントと同じデプロイメント内にある場合は、Open Catalogアカウント用の新しい VPC エンドポイントを作成する必要はありません。オプションでこのステップを省略することもできます。
手順については、Snowflakeドキュメントの VPC エンドポイント(VPCE)の作成および構成のステップ2以降を参照してください。
ステップ5: VPC ネットワークを構成する¶
VPC ネットワークを構成するには、 DNS サービスに CNAME レコードを作成し、 プライベート接続用のOpen Catalogアカウントの設定から VPC エンドポイントの DNS 名に適切なエンドポイント値を解決します。
手順については、Snowflakeドキュメントの VPC ネットワークの構成 をご参照ください。これらの手順はSnowflake用であり、Open Catalogには適用されない機能があることを忘れないでください。例えば、 regionless-snowsight-privatelink-url
はSnowsight用で、Open Catalogではサポートされていません。
DNS 構成に関するその他のヘルプについては、 AWS の内部管理者にご連絡ください。
ステップ6: AWS PrivateLink を介したOpen Catalogへの接続¶
サービス接続を登録し、 AWS PrivateLink を介してクエリエンジンをSnowflake 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()
パラメーター¶
注釈
<open_catalog_account_identifier>
に指定した値と一致するように、 DNS サービスを設定してください。
パラメーター |
説明 |
---|---|
|
接続先のカタログ名を指定します。 |
|
外部クラウドストレージプロバイダーのMaven座標を指定します:
|
|
サービスプリンシパルが使用するクライアント ID を指定します。 |
|
サービスプリンシパルが使用するクライアントシークレットを指定します。 |
|
AWS PrivateLink またはAzure Private Linkを使用してSnowflakeアカウントに接続するための URL を指定します。
|
|
サービスプリンシパルに付与されるプリンシパルロールを指定します。 |
ステップ7(オプション): 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 にアクセスすることができます。
このアクセスを構成するには、 Snowflake Open Catalog UI 用プライベート接続の構成をご参照ください。