AWSPrivateLink およびSnowflake Open Catalog¶
このトピックでは、インバウンドプライベート接続を使用して、Snowflake Open Catalogアカウントをクエリエンジンに直接接続するように AWSPrivateLink を構成する方法について説明します。
前提条件¶
Snowflake Open Catalogアカウントが AWS でホストされている。
Open Catalogアカウントのプライベート接続 URL を使用して AWSDNS サービスを構成するために必要な権限を持っている。ガイダンスについては、Snowflakeコミュニティの[PrivateLink 経由でSnowflakeにアクセスするためにの AWSDNS サービス(ルート53)を構成する方法](https://community.snowflake.com/s/article/How-to-configure-the-AWS-DNS-service-Route-53-to-access-Snowflake-via-a-PrivateLink)をご参照ください。
ステップ1:AWS PrivateLink を有効にします¶
このプロシージャでは、Open CatalogアカウントのAWSPrivateLink を有効にします。この構成により、クエリエンジンはプライベート接続を介してOpen Catalogに接続できます。Amazon Web Services(AWS)アカウントの12桁の識別子と、フェデレーションユーザーのアカウント認証情報を含むフェデレーション認証済みトークン値が必要になります。
フェデレーション認証済みトークン値を取得するには、 AWSCLI を使用して次のコマンドを実行し、値をテキストエディターにコピーします。
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 ネットワークを構成する、AWSPrivateLink を介して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 システム関数。
Snowflakeドキュメントでは
privatelink-vpce-id
はOpen Catalogの VPCE サービス ID に対応します。
ステップ4:VPC エンドポイントを作成および構成する¶
この手順では、 AWSVPC 環境に対応する 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に接続する¶
サービス接続を登録し、クエリエンジンを AWSPrivateLink 経由で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()
パラメーター¶
注釈
を設定していることを確認してください DNS に指定した値と一致する サービス <open_catalog_account_identifier>
.
パラメーター |
説明 |
---|---|
|
接続先のカタログ名を指定します。 |
|
外部クラウドストレージプロバイダーの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 にアクセスできます。
このアクセスを構成するには、SnowflakeOpen Catalog UI のプライベート接続の構成をご参照ください。