設定 Snowflake 移轉作業的私人連線
本指南說明如何設定私人連線,從 Snowflake 建立私人資料轉移至 BigQuery。透過私有資料移轉功能,您可以在私有網路中將資料從一個來源移轉至另一個來源,並降低透過公用網際網路移轉資料時的安全性風險。
下列章節說明設定私人連線的必要步驟,完成後才能建立 Snowflake 轉移作業。
如果 Snowflake 執行個體託管於 Amazon Web Services (AWS)、Microsoft Azure 和 Cloud de Confiance by S3NS,則支援私人轉移。

建立 Snowflake 的私人連結
建立私人連結,將 Snowflake 帳戶連至雲端服務供應商。如需更多資訊,請選取下列其中一個選項:
AWS
設定 AWS PrivateLink,將 Snowflake 帳戶連結至 AWS 帳戶。AWS 帳戶必須包含 Snowflake 移轉所需的 Amazon S3 中繼值區。
Azure
設定 Azure Private Link,將 Azure 虛擬網路 (VNet) 連線至 Azure 中的 Snowflake VNet。您的 Azure 帳戶必須包含 Snowflake 轉移作業所需的 Blob 暫存值區。
Cloud de Confiance
設定 Cloud de Confiance by S3NS Private Service Connect,將虛擬私有雲 (VPC) 網路子網路連線至 Cloud de Confiance by S3NS上代管的 Snowflake 帳戶。Cloud de Confiance by S3NS 您必須具備 Cloud Storage 中繼 bucket,才能進行 Snowflake 轉移。
設定 Cross-Cloud Interconnect 或高可用性 VPN
從 AWS 或 Azure 設定 Cross-Cloud Interconnect 或高可用性 VPN。如果是Cloud de Confiance代管的 Snowflake 帳戶,則不需要執行這個步驟。
AWS
高可用性 VPN 可讓您透過加密的 VPN 通道傳輸資料。如要使用高可用性 VPN 進行私有 Snowflake 傳輸,請參閱「在 Cloud de Confiance 和 AWS 之間建立高可用性 VPN 連線」。
Cross-Cloud Interconnect 連線會在雲端供應商之間建立專屬的私人連結,適合用於有低延遲需求的大量資料移轉作業。如要使用 Cross-Cloud Interconnect 進行私有 Snowflake 傳輸,請參閱「連線至 AWS」。
Azure
高可用性 VPN 可讓您透過加密的 VPN 通道傳輸資料。如要使用高可用性 VPN 進行私有 Snowflake 轉移,請參閱「在 Cloud de Confiance 和 Azure 之間建立高可用性 VPN 連線」。
Cross-Cloud Interconnect 連線會在雲端供應商之間建立專屬的私人連結,適合用於有低延遲需求的大量資料移轉作業。如要使用 Cross-Cloud Interconnect 進行私有 Snowflake 傳輸,請參閱「連線至 Azure」。
建立 Proxy VM
如要完成私人連線,您必須使用 Proxy VM 完成資料來源之間的連線,且資料不會傳輸到公開網際網路。如果 Snowflake 執行個體代管於 AWS、Azure 或 Cloud de Confiance,則必須執行這個步驟。
如要為 Snowflake 私人轉移作業建立及設定 Proxy VM,請執行下列步驟:
- 在消費者虛擬私有雲網路中建立一或多個 Compute Engine VM 執行個體。
- 下載 TCP Proxy 軟體 (例如 HAProxy 或 Nginx),並設定下列項目:
- 指定通訊埠。例如
443。 - 將所有傳入的 TCP 流量轉送至 Snowflake 執行個體上的私人主機名稱和通訊埠。
- 指定通訊埠。例如
- 設定 VM,透過消費者虛擬私有雲網路中設定的 DNS 解析 Snowflake 私人主機名稱。
- 如要設定內部直通式負載平衡器,請執行下列操作:
建立服務連結
使用 Private Service Connect 建立網路連結並發布服務。如果 Snowflake 執行個體代管於 AWS、Azure 或 Cloud de Confiance,則必須執行這個步驟。
服務連結必須與 BigQuery 資料集位於相同區域。
如果您的服務使用明確核准 (connection-preference 設為 ACCEPT_MANUAL),則 Snowflake 私人資料轉移作業中使用的服務帳戶必須具備下列 IAM 權限:
compute.serviceAttachments.getcompute.serviceAttachments.updatecompute.regionOperations.get
建立服務連結後,請記下服務連結 URI。建立 Snowflake 轉移設定時,您需要這個 URI。
建立端點
在 AWS 或 Azure 帳戶中建立端點。 如果是Cloud de Confiance代管的 Snowflake 帳戶,則不需要執行這個步驟。
AWS
在 AWS 中,建立連線至 Amazon S3 的 VPC 端點。詳情請參閱「使用介面 VPC 端點存取 AWS 服務」。
Azure
在 Azure 的儲存體帳戶上設定私人端點。詳情請參閱「使用 Azure 儲存空間的私人端點」。
Storage 移轉服務需要 *.blob.core.microsoft.net 端點。系統不支援 *.dfs.core.microsoft.net 端點。
建立完成後,請記下端點的 IP 位址。在下一節中建立負載平衡器時,您需要指定 IP 位址。
建立網路負載平衡器
設定具有混合式連線的區域性內部 Proxy 網路負載平衡器 (NLB)。您可以建立負載平衡器,將流量路由至您在上一節中建立的 Amazon S3 虛擬私有雲端端點或 Azure 儲存空間私有端點。詳情請參閱「設定具有混合式連線的區域內部 Proxy 網路負載平衡器」。
註冊 NLB
建立網路 NLB 後,請在 Storage 移轉服務 的 Service Directory 中註冊。詳情請參閱「向 Service Directory 註冊 NLB」。
記下服務目錄的連結。建立 Snowflake 轉移設定時,您需要服務的自我連結。
準備暫存 bucket
如要完成 Snowflake 資料移轉,您必須建立暫存 bucket,然後設定該 bucket,允許 Snowflake 寫入資料。
選取下列選項之一:
AWS
如果是 AWS 代管的 Snowflake 帳戶,請建立 Amazon S3 值區來暫存 Snowflake 資料,再將資料載入 BigQuery。
建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Amazon S3 值區,做為外部階段。
如要允許 Amazon S3 bucket 的讀取權限, 您也必須執行下列操作:
建立專用的 Amazon IAM 使用者,並授予
AmazonS3ReadOnlyAccess政策。為 IAM 使用者建立 Amazon 存取金鑰組。
Azure
如果是 Azure 託管的 Snowflake 帳戶,請建立 Azure Blob 儲存體容器,暫存 Snowflake 資料,再載入 BigQuery。
- 建立 Azure 儲存體帳戶,並在其中建立儲存體容器。
- 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Azure 儲存空間容器,做為外部階段。您可以略過建立外部階段的步驟,因為這並非必要。
如要允許讀取 Azure 容器,請為該容器產生 SAS 權杖。
Cloud de Confiance
如果是 Cloud de Confiance代管的 Snowflake 帳戶,請建立 Cloud Storage bucket,暫存 Snowflake 資料,再載入至 BigQuery。
- 建立 Cloud Storage bucket。
- 建立及設定 Snowflake 儲存空間整合物件,允許 Snowflake 將資料寫入 Cloud Storage bucket 做為外部階段。
如要允許存取暫存值區,請使用下列指令,將
roles/storage.objectViewer角色授予 DTS 服務代理程式:gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
建立私有 Snowflake 移轉設定
建立 Snowflake 移轉作業。設定移轉設定時,請執行下列操作:
控制台
- 在「Use Private Network」(使用私人網路) 部分,選取「True」(是)。
- 在「PSC 服務連結」部分,輸入服務連結 URI。如要瞭解如何找出服務附件 URI,請參閱「查看已發布服務的詳細資料」。服務連結 URI 的格式為
projects/PROJECT_ID/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT。 - 如果是私有網路服務,請輸入 NLB 服務的自我連結。
該值使用格式
projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE/services/SERVICE_NAME。 - 要用於轉移作業的暫存值區 URI:
- 如果是 AWS 代管的 Snowflake 帳戶,則必須提供 Amazon S3 bucket URI 和存取憑證。
- 如果是 Azure 託管的 Snowflake,則需要 Azure Blob 儲存體帳戶和容器。
- 如果是Cloud de Confiance代管的 Snowflake 帳戶,則必須提供 Cloud Storage 值區 URI。
在「Cloud Provider」(雲端服務供應商) 部分,根據代管 Snowflake 帳戶的雲端服務供應商,選取
AWS、AZURE或GCP。AWS
- 在「Amazon S3 URI」部分,輸入將做為暫存值區使用的 Amazon S3 值區的 URI。
- 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(存取密鑰) 部分,輸入存取金鑰組。
Azure
- 在「Azure storage account name」(Azure 儲存體帳戶名稱)和「The container in the Azure storage account」(Azure 儲存體帳戶中的容器),輸入要用做暫存 bucket 的 Azure Blob 儲存體帳戶和容器名稱。
- 在「SAS Token」(SAS 權杖) 部分,輸入為容器產生的 SAS 權杖。
Cloud de Confiance
- 在「GCS URI」部分,輸入將做為暫存 bucket 的 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:輸入AWS、AZURE或GCP,視代管 Snowflake 帳戶的雲端服務供應商而定。staging_s3_uri:輸入要當做暫存 bucket 的 S3 bucket URI。只有在cloud_provider為AWS時才需要。aws_access_key_id:輸入存取金鑰組。只有在cloud_provider為AWS時才需要。aws_secret_access_key:輸入存取金鑰組。只有在cloud_provider為AWS時才需要。azure_storage_account:輸入要用做暫存 bucket 的儲存空間帳戶名稱。只有在cloud_provider為AZURE時才需要。staging_azure_container:輸入Azure Blob 儲存體中的容器,做為暫存值區。只有在cloud_provider為AZURE時才需要。azure_sas_token:輸入 SAS 權杖。只有在cloud_provider為AZURE時才需要。staging_gcs_uri:輸入要用做暫存 bucket 的 Cloud Storage URI。只有在cloud_provider為GCP時才需要。