Snowflake 転送のプライベート接続を構成する
このガイドでは、プライベート接続を構成して、Snowflake から BigQuery へのプライベート データ転送を作成する方法について説明します。プライベート データ転送を使用すると、プライベート ネットワーク内で 1 つのソースから別のソースにデータを転送できます。また、公共のインターネット経由でデータを転送する際のセキュリティ リスクを軽減できます。
以降のセクションでは、Snowflake 転送を作成する前にプライベート 接続を構成するために必要な手順について説明します。
プライベート転送は、Amazon Web Services(AWS)、Microsoft Azure、でホストされている Snowflake インスタンスでサポートされています Google Cloud。

Snowflake へのプライベート リンクを作成する
Snowflake アカウントをクラウド プロバイダに接続するプライベート リンクを作成します。詳細については、次のいずれかのオプションを選択してください。
AWS
AWS PrivateLink を構成して、Snowflake アカウントを AWS アカウントに接続します。AWS アカウントには、Snowflake 転送に必要な Amazon S3 ステージング バケットが含まれている必要があります。
Azure
Azure Private Link を構成して、 Azure Virtual Network(VNet)を Azure の Snowflake VNet に接続します。Azure アカウントには、Snowflake 転送に必要な Blob ステージング バケットが含まれている必要があります。
Google Cloud
Private Service Connect を構成して、 Virtual Private Cloud(VPC)ネットワーク サブネット を Google Cloudでホストされている Snowflake アカウントに接続します。 Google Cloud には、Snowflake 転送に必要な Cloud Storage ステージング バケットが必要です。Google Cloud
Cross-Cloud Interconnect または HA VPN を設定する
AWS または Azure から Cross-Cloud Interconnect または HA VPN を設定します。この手順は、 Google Cloudでホストされている Snowflake アカウントでは必要ありません。
AWS
高可用性 VPN を使用すると、暗号化された VPN トンネルを介してデータを転送できます。プライベート Snowflake 転送に HA VPN を使用するには、と AWSの間に HA VPN 接続を作成する Google Cloud をご覧ください。
Cross-Cloud Interconnect 接続は、クラウド プロバイダ間に専用のプライベート リンクを作成します。これは、低レイテンシ要件で大量のデータを転送する場合に 適しています。プライベート Snowflake 転送に Cross-Cloud Interconnect を使用するには、Connect to AWSをご覧ください。
Azure
高可用性 VPN を使用すると、暗号化された VPN トンネルを介してデータを転送できます。プライベート Snowflake 転送に HA VPN を使用するには、HA VPN 接続を と Google Cloud Azureの間に作成するをご覧ください。
Cross-Cloud Interconnect 接続は、クラウド プロバイダ間に専用のプライベート リンクを作成します。これは、低レイテンシ要件で大量のデータを転送する場合に 適しています。プライベート Snowflake 転送に Cross-Cloud Interconnect を使用するには、Azure に接続するをご覧ください。
プロキシ VM を作成する
プライベート接続を完了するには、データが公共のインターネットに到達することなくデータソース間の接続を完了するために、プロキシ VM が必要です。この手順は、 AWS、Azure、 Google Cloudでホストされている Snowflake インスタンスで必要です。
Snowflake プライベート転送用のプロキシ VM を作成して構成するには、次の操作を行います。
- コンシューマー VPC ネットワーク内に 1 つ以上の Compute Engine VM インスタンスを作成します。
- HAProxy や Nginx などの TCP プロキシ ソフトウェアをダウンロードし、次のように構成します。
- ポートを指定します。例:
443 - 受信するすべての TCP トラフィックを、Snowflake インスタンスのプライベート ホスト名とポートに転送します。
- ポートを指定します。例:
- コンシューマー VPC ネットワークで構成された DNS を介して Snowflake プライベート ホスト名を解決するように VM を構成します。
- 次の操作を行って、内部パススルー ロードバランサを設定します。
サービス アタッチメントを作成する
Private Service Connect を使用してネットワーク アタッチメントを作成し、サービスを公開します。 この手順は、 AWS、Azure、 Google Cloudでホストされている Snowflake インスタンスで必要です。
サービス アタッチメントは、BigQuery データセットと同じリージョンに存在する必要があります。
サービスで明示的な承認(connection-preference が ACCEPT_MANUAL に設定されている)を使用する場合、Snowflake プライベート データ転送で使用されるサービス アカウントには、次の IAM 権限が必要です。
compute.serviceAttachments.getcompute.serviceAttachments.updatecompute.regionOperations.get
サービス アタッチメントを作成したら、サービス アタッチメントの URI をメモします。この URI は、Snowflake 転送構成を作成するときに必要になります。
エンドポイントの作成
AWS アカウントまたは Azure アカウントにエンドポイントを作成します。 この手順は、 Google Cloudでホストされている Snowflake アカウントでは必要ありません。
AWS
AWS で、Amazon S3 に接続する VPC エンドポイントを作成します。 詳細については、インターフェース VPC エンドポイントを使用して AWS サービスにアクセスするをご覧ください。
Azure
Azure のストレージ アカウントにプライベート エンドポイントを構成します。詳細については、Azure Storage にプライベート エンドポイントを使用する をご覧ください。
Storage Transfer Service には、*.blob.core.windows.net エンドポイントが必要です。*.dfs.core.windows.net エンドポイントはサポートされていません。
作成したら、エンドポイントの IP アドレスをメモします。次のセクションでロードバランサを作成するときに、IP アドレスを指定する必要があります。
ネットワーク ロードバランサを作成する
で Google Cloud、 ハイブリッド接続でリージョン内部プロキシ ネットワーク ロードバランサを設定します。これにより、ロードバランサと同じ VPC ネットワークで実行されているクライアントに制限された内部 IP アドレスが提供され、前のセクションで作成した S3 VPC エンドポイントまたは Azure Storage プライベート エンドポイントにトラフィックがルーティングされます。
ロードバランサは、Cloud Interconnect とインターフェースする VLAN アタッチメントと同じプロジェクトと VPC ネットワークに作成する必要があります。相互接続自体は同じ組織内の別のプロジェクトに配置できますが、アタッチメントはロードバランサと同じ VPC とリージョンに配置する必要があります。
[ハイブリッド接続 NEG にエンドポイントを追加する] というラベルの手順に到達したら、S3 VPC エンドポイントまたは Azure Storage プライベート エンドポイントの IP アドレスを指定します。
次のセクションで指定する必要があるため、NLB のフロントエンド IP アドレスとポートをメモします。
接続を検証する
続行する前に、ロードバランサがリモート ストレージ エンドポイントに接続できることを確認することをおすすめします。
手順は次のとおりです。
- ロードバランサと同じ VPC ネットワークに Compute Engine VM を作成します。
VM から
curlを使用して、ロードバランサの IP アドレスとポートへの接続をテストします。curl -v --resolve HOSTNAME:PORT:LOAD_BALANCER_IP https://HOSTNAME次のように置き換えます。
- HOSTNAME は、ソース ストレージ プロバイダのホスト名です。
- AWS S3 の場合は、バケットのリージョンの S3 API エンドポイント(
s3.us-west-1.amazonaws.comなど)を使用します。 - Azure Storage の場合は、ストレージ アカウントの Blob エンドポイント(
mystorageaccount.blob.core.windows.netなど)を使用します。
- AWS S3 の場合は、バケットのリージョンの S3 API エンドポイント(
- PORT は、ロードバランサの
転送ルールで構成したポートです。通常は
443です。 - LOAD_BALANCER_IP は、ロードバランサのフロントエンド IP アドレスです。
- HOSTNAME は、ソース ストレージ プロバイダのホスト名です。
リモート エンドポイントからのレスポンス(エラーを含む)は、接続が成功したことを示します。接続がタイムアウトした場合は、ネットワーク設定に誤りがあるため、続行する前に解決する必要があります。
NLB を登録する
Service Directory に NLB を登録します。BigQuery は Service Directory を使用してロードバランサのアドレスを解決し、直接接続します。
手順に沿って 内部ロードバランサを登録します。 転送ルールを指定するときに作成したロードバランサの IP アドレスとポートを使用します。
作成したら、サービスの自己リンクをメモします。形式は projects/{project_id}/locations/{location}/namespaces/{namespace}/services/{service} です。
この値は、転送ジョブを作成するときに必要になります。
ステージング バケットを準備する
Snowflake データ転送を完了するには、ステージング バケットを作成してから、Snowflake からの書き込みアクセスを許可するように構成する必要があります。
次のオプションのいずれかを選択します。
AWS
AWS でホストされている Snowflake アカウントの場合は、Snowflake データを BigQuery に読み込む前にステージングするための Amazon S3 バケットを作成します。
Snowflake ストレージ統合オブジェクトを作成して構成し、Snowflake が外部ステージとして Amazon S3 バケットにデータを書き込めるようにします。
Amazon S3 バケットに対する読み取りアクセスを許可するには、次の操作も行う必要があります。
専用の Amazon IAM ユーザー を作成し、
AmazonS3ReadOnlyAccessポリシーを付与します。Amazon アクセスキー ペアを作成します IAM ユーザーの。
Azure
Azure でホストされている Snowflake アカウントの場合は、Snowflake データを BigQuery に読み込む前にステージングするための Azure Blob Storage コンテナを作成します。
- Azure ストレージ アカウントを作成し、ストレージ アカウント内にストレージ コンテナを作成します。
- Snowflake ストレージ統合オブジェクトを作成して構成し 、Snowflake が外部ステージとして Azure ストレージ コンテナにデータを書き込めるようにします。外部ステージの作成は必須ではないため、この手順はスキップできます。
Azure コンテナへの読み取りアクセスを許可するには、 そのコンテナの SAS トークンを生成します。
Google Cloud
でホストされている Snowflake アカウントの場合は、Snowflake データを BigQuery に読み込む前にステージングするための Cloud Storage バケットを作成します。 Google Cloud
- Cloud Storage バケットを作成します。
- Snowflake ストレージ統合オブジェクトを作成して構成し、Snowflake が外部ステージとして Cloud Storage バケットにデータを書き込めるようにします。
ステージング バケットへのアクセスを許可するには、次のコマンドを使用して DTS サービス エージェントに
roles/storage.objectViewerロールを付与します。gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer. \ --role=roles/storage.objectViewer
プライベート Snowflake 転送構成を作成する
Snowflake 転送を作成します。転送構成を設定する際は、次の操作を行います。
コンソール
- [**プライベート ネットワークを使用**] で [**True**] を選択します。
- [PSC サービス アタッチメント] に、サービス アタッチメントの URI を入力します。サービス アタッチメント
の URI の確認方法については、公開サービスの詳細を表示するをご覧ください。
サービス アタッチメントの URI の形式は
projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENTです。 - [Private Network Service] に、NLB サービスの自己リンクを入力します。
形式は
projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAMEです。 - 転送に使用するステージング バケットの URI:
- AWS でホストされている Snowflake アカウントの場合、アクセス認証情報とともに Amazon S3 バケット URI が必要です。
- Azure でホストされている Snowflake の場合、Azure Blob Storage アカウントとコンテナが必要です。
- でホストされている Snowflake アカウントの場合、 Cloud Storage バケット URI が必要です。Google Cloud
[Cloud Provider] で、Snowflake アカウントがホストされている クラウド プロバイダに応じて
AWS、AZURE、GCPのいずれかを選択します。AWS
- [Amazon S3 URI] に、ステージング バケットとして使用する [Amazon S3 バケットの URI] を入力します。
- [**アクセスキー ID**] と [**シークレット アクセスキー**] に、 [**アクセスキー ペア**]を入力します。
Azure
- [Azure ストレージ アカウント名] と [Azure ストレージ アカウント内のコンテナ] に、ステージング バケットとして使用する Azure Blob Storage のストレージ アカウントとコンテナ名 を入力します。
- [SAS Token] に、 コンテナ用に生成された SAS トークンを入力します。
Google Cloud
- [GCS URI] に、ステージング バケットとして使用する [Cloud Storage の URI] を入力します。
bq
use_private_networkパラメータをTRUEに設定します。service_attachmentパラメータに、サービス アタッチメントの URI を指定します。サービス アタッチメント の URI の確認方法については、公開サービスの詳細を表示するをご覧ください。 サービス アタッチメントの URI の形式はprojects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENTです。private_network_serviceパラメータに、NLB サービスの自己リンクを指定します。 形式はprojects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAMEです。cloud_provider: Snowflake アカウントがホストされている クラウド プロバイダに応じて、AWS、AZURE、GCPのいずれかを入力します。staging_s3_uri: ステージング バケットとして使用する S3 バケットの URI を入力します。cloud_providerがAWSの場合にのみ必須です。aws_access_key_id: アクセスキー ペアを入力します。cloud_providerがAWSの場合にのみ必須です。aws_secret_access_key: アクセスキー ペアを入力します。cloud_providerがAWSの場合にのみ必須です。azure_storage_account: ステージング バケットとして使用する ストレージ アカウント名 を入力します。cloud_providerがAZUREの場合にのみ必須です。staging_azure_container: ステージング バケットとして使用する Azure Blob Storage 内のコンテナ を入力します。cloud_providerがAZUREの場合にのみ必須です。azure_sas_token: SAS トークンを入力します。cloud_providerがAZUREの場合にのみ必須です。staging_gcs_uri: ステージング バケットとして使用する Cloud Storage の URI を入力します。cloud_providerがGCPの場合にのみ必須です。