外部ステージとSnowpipe自動化のためのAzureプライベート接続¶
このトピックでは、以下のSnowflake機能の アウトバウンドプライベート接続 をセットアップするための構成の詳細を説明します。
外部ステージを使用したMicrosoft Azureからの一括ロード。
Microsoft Azure BLOBストレージ用Snowpipeの自動化。
一括ロードとSnowpipeの自動化をプライベート接続用に構成する場合と、パブリックネットワークトラフィック用に構成する場合の違いは以下のとおりです。
必要なストレージ統合、ステージ、または通知統合のために
USE_PRIVATELINK_ENDPOINT = TRUE
をセットします。外部ステージ(一括ロードとSnowpipeの自動化)用のプライベート接続エンドポイントを作成します。
通知統合用のプライベート接続エンドポイントを作成します(Snowpipeの自動化のみ)。
アウトバウンド プライベート接続コスト¶
各プライベート・コネクティビティ・エンドポイントの料金は、処理されるデータ総量に応じて支払われます。これらのアイテムの価格については、 Snowflake Service Consumption Table をご参照ください。
ACCOUNT_USAGE および ORGANIZATION_USAGE スキーマで請求ビューをクエリする際、以下のサービスタイプでフィルターをかけることで、これらの項目のコストを調べることができます。
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
例えば、 USAGE_IN_CURRENCY_DAILY 表示をクエリし、これらのサービスタイプでフィルターをかけることができます。
考慮事項¶
同じストレージアカウントに対して、アウトバウンドパブリック接続とアウトバウンドプライベート接続を構成できます。この場合、アウトバウンドパブリック接続専用のストレージ統合を作成し、 USE_PRIVATELINK_ENDPOINT = FALSE
を指定します。
プライベート接続プロパティ¶
ストレージ統合または外部ステージの USE_PRIVATELINK_ENDPOINT
プロパティは、プライベート接続でアクセスするか、パブリックネットワークを経由してアクセスするかを決定します。プライベート接続を使用するには、 USE_PRIVATELINK_ENDPOINT = TRUE
をセットします。
USE_PRIVATELINK_ENDPOINT = TRUE
を指定するストレージ統合を参照するステージは、プライベートエンドポイント構成を継承します。結果、プライベート接続を使用するように構成されているストレージ統合を使用している場合、ステージで USE_PRIVATELINK_ENDPOINT
プロパティを指定する必要はありません。また、ステージを変更して USE_PRIVATELINK_ENDPOINT
プロパティをセットすることもできません。
外部ステージアクセスの構成¶
これらの手順は、 Microsoft Azure の外部ステージにデータをアンロードするために、ストレージ統合でアウトバウンドプライベート接続を使用する場合に固有のものです。ストレージ統合を参照する代わりにステージの CREDENTIALS
プロパティを使用する場合は、フローを変更する必要があります。
これらの手順は、一括ロードとSnowpipeの自動化の両方に必要です。
Snowflakeで、 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT システム関数を呼び出して、Snowflake VNet にプライベート接続エンドポイントをプロビジョニングし、Snowflakeがプライベート接続を使用して外部BLOBストレージアカウントに接続できるようにします。
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo', 'mystorageaccount.blob.core.windows.net', 'blob' );
この関数はプライベートエンドポイントをホスト名にバインドし、ストレージ統合がプライベートエンドポイントを使用してストレージロケーションに接続できるようにします。
Azure Portalで、 Microsoft Azure BLOBストレージリソースの所有者として、プライベートエンドポイントを承認します。詳しくは、 承認プロセス をご覧ください。
Snowflakeで、 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 関数を呼び出します。
関数の出力に
"status": "APPROVED
が含まれる場合、Snowflakeからストレージアカウントへの接続はプライベート接続を使用できるようになります(他の必要なSnowflakeオブジェクトがアウトバウンドプライベート接続で有効になった後)。"APPROVED"
のステータスを待つ間、次のステップに進むことができます。ストレージ統合を作成し、必ず
USE_PRIVATELINK_ENDPOINT
プロパティを指定してください。CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = AZURE AZURE_TENANT_ID = 'cc2909f2-ed22-4c89-8e5d-bdc40e5eac26' STORAGE_ALLOWED_LOCATIONS = ('azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/') USE_PRIVATELINK_ENDPOINT = TRUE ENABLED = TRUE;
ストレージ統合を参照する外部ステージを作成します。
CREATE OR REPLACE STAGE my_storage_private_stage URL = 'azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/' STORAGE_INTEGRATION = outbound_private_link_int;
プライベートエンドポイントが
"APPROVED"
ステータスになったら、Snowflakeから外部ステージへのデータのアンロードをテストします。COPY INTO @my_storage_private_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
結果を Microsoft Azure ステージで表示します。
通知統合の構文更新¶
Microsoft Azure BLOBストレージ用Snowpipeを自動化するには、通知統合を作成する必要があります。以下の構文更新により、プライベート接続の通知統合を構成できます。
CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
...
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Snowpipeの自動化の構成¶
このセクションでは、 Microsoft Azure BLOBストレージ用Snowpipeの自動化 で説明したプロシージャを変更し、プライベート接続でSnowpipeの自動化を実装する方法を説明します。唯一の違いは、プライベート接続エンドポイントのプロビジョニングと、ストレージ統合と通知統合の USE_PRIVATELINK_ENDPOINT
プロパティの構成です。
このドキュメントで前述 したように、ストレージ統合とステージを、専用のプライベート接続エンドポイントとともに作成します。
Microsoft Azure BLOBストレージ用Snowpipeの自動化トピックで説明されているように、 Snowflakeにストレージの場所へのアクセス権を付与 します。
Microsoft Azure BLOBストレージ用Snowpipeの自動化トピックで説明されているように、 Event Gridサブスクリプションを構成 します。
Snowflakeでは、 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT システム関数を呼び出して、Snowflake VNet でプライベートエンドポイントをプロビジョニングし、Snowflakeがプライベート接続を使用してAzureキューに接続できるようにします。
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/mystorageaccount', 'mystorageaccount.queue.core.windows.net', 'queue' );
Azure Portalで、 Microsoft Azure ストレージリソースの所有者として、プライベートエンドポイントを承認します。情報については、 承認プロセス をご覧ください。
Snowflakeで、 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 関数を呼び出します。
関数の出力に
"status": "APPROVED
が含まれる場合、Snowflakeからストレージアカウントへの接続はプライベート接続を使用できるようになります(他の必要なSnowflakeオブジェクトがアウトバウンドプライベート接続で有効になった後)。重要
次のステップに進む前に、ステータスが
APPROVED
になるまで待つ必要があります。Microsoft Azure BLOBストレージ用Snowpipeの自動化トピックで説明されているように、 ストレージキュー URL とテナント ID を取得 します。
通知統合を作成し、必ず
USE_PRIVATELINK_ENDPOINT
プロパティを指定してください。CREATE OR REPLACE NOTIFICATION INTEGRATION ni_pl ENABLED = TRUE TYPE = QUEUE NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE AZURE_STORAGE_QUEUE_PRIMARY_URI = "https://storageaccount.queue.core.windows.net/queuename" AZURE_TENANT_ID = '00000000-0000-0000-0000-000000000000' USE_PRIVATELINK_ENDPOINT = TRUE;
Microsoft Azure BLOBストレージ用Snowpipeの自動化トピックで説明されているように、 Snowflakeにストレージキューへのアクセス権を付与 します。
Microsoft Azure BLOBストレージ用Snowpipeの自動化トピックで説明されているように、 自動インジェストを有効にしたパイプを作成 します。
プライベート接続の無効化¶
プライベート接続を無効にするプロセスは、エンドポイントがストレージ統合、外部ステージ、または通知統合のためにプロビジョニングされたかどうかによって異なります。
- ストレージ統合/外部ステージ
外部ステージのプライベート接続エンドポイントが不要になった場合は、ステージまたはストレージ統合の
USE_PRIVATELINK_ENDPOINT
プロパティを設定解除してから、 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT システム関数を呼び出します。- 通知の統合
ストレージ統合や外部ステージとは異なり、通知統合の
USE_PRIVATELINK_ENDPOINT
プロパティを設定解除することはできません。プライベート接続が不要になった場合は、通知統合をドロップし、新しいものを作成する必要があります。通知統合を再作成した後、 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT システム関数を呼び出して、エンドポイントのデプロビジョンを行うことができます。