建立及設定 Cloud 資源連線
身為 BigQuery 管理員,您可以建立 Cloud 資源連線,讓資料分析師執行下列工作:
- 使用 BigLake 資料表查詢結構化 Cloud Storage 資料。BigLake 資料表可讓您透過存取權委派功能查詢外部資料。
- 使用物件資料表查詢 Cloud Storage 中的非結構化資料。
- 在 Cloud Run 函式或 Cloud Run 中使用任何支援的語言來實作遠端函式。
- 使用 Spanner 外部資料集查詢 Spanner 資料。使用 Cloud 資源連線的 Spanner 外部資料集,可讓您透過存取權委派查詢外部資料來源。
如要進一步瞭解連線,請參閱「連線簡介」。
事前準備
啟用 BigQuery Connection API。
-
如要取得建立雲端資源連線所需的權限,請要求管理員授予下列 IAM 角色:
-
專案中的 BigQuery 連線管理員 (
roles/bigquery.connectionAdmin
) -
值區的 Storage 物件檢視器 (
roles/storage.objectViewer
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
如果您想使用 以 Cloud Storage 為基礎的 BigLake 資料表查詢結構化資料,或是使用 物件資料表查詢非結構化資料,則與連線相關聯的服務帳戶必須在包含外部資料的值區中具備「Storage Viewer」(roles/storage.viewer
) 角色。
-
專案中的 BigQuery 連線管理員 (
- 請確認您使用的 Google Cloud SDK 版本為 366.0.0 以上版本:
gcloud version
位置考量
使用 Cloud Storage 儲存資料檔案時,建議您使用 Cloud Storage 單區域或雙區域值區,以獲得最佳效能,不要使用多區域值區。
建立 Cloud 資源連線
BigLake 會透過連線存取 Cloud Storage。您可以將此連線用於單一資料表或一組資料表。
如果您已設定具備適當權限的預設連線,可以略過這個步驟。
為遠端模型建立Cloud 資源連線,並取得連線的服務帳戶。請在與您在上一個步驟中建立的資料集相同的位置建立連線。
選取下列選項之一:
主控台
前往「BigQuery」頁面
在「Explorer」窗格中,按一下
「新增資料」:「Add data」對話方塊隨即開啟。
在「Filter By」窗格中的「Data Source Type」部分,選取「Business Applications」。
或者,您也可以在「Search for data sources」欄位中輸入
Vertex AI
。在「精選資料來源」部分,按一下「Vertex AI」。
按一下「Vertex AI 模型:BigQuery 聯盟」解決方案資訊卡。
在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」。
在「連線 ID」欄位中,輸入連線的名稱。
點選「建立連線」。
按一下「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以便在後續步驟中使用。
bq
在指令列環境中建立連線:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
參數會覆寫預設專案。更改下列內容:
REGION
:您的連線區域PROJECT_ID
:您的 Google Cloud 專案 IDCONNECTION_ID
:連線 ID
建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將該帳戶與連線建立關聯。
疑難排解:如果您收到下列連線錯誤,請更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
擷取並複製服務帳戶 ID,以便在後續步驟中使用:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
輸出結果會與下列內容相似:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
使用 google_bigquery_connection
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在 US
地區中建立名為 my_cloud_resource_connection
的 Cloud 資源連線:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,該檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 將要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
將存取權授予服務帳戶
如要建立遠端函式,您必須授予 Cloud Run 函式或 Cloud Run 所需的角色。
如要連線至 Cloud Storage,您必須為新連線授予 Cloud Storage 唯讀存取權,這樣 BigQuery 才能代替使用者存取檔案。
選取下列選項之一:
主控台
建議您為連線資源的服務帳戶,授予 Storage 物件檢視者 IAM 角色 (roles/storage.objectViewer
),這樣服務帳戶就能存取 Cloud Storage bucket。
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下
「新增」。系統會開啟「Add principals」對話方塊。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object Viewer」(Storage 物件檢視者)。
按一下 [儲存]。
gcloud
使用 gcloud storage buckets add-iam-policy-binding
指令:
gcloud storage buckets add-iam-policy-binding gs://BUCKET \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
更改下列內容:
BUCKET
:儲存體值區的名稱。MEMBER
:先前複製的服務帳戶 ID。
詳情請參閱「在值區層級政策中新增實體」。
Terraform
使用 google_bigquery_connection
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會將 IAM 角色存取權授予 Cloud 資源連線的服務帳戶:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,該檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 將要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
與使用者分享連線
您可以授予下列角色,讓使用者查詢資料及管理連線:
roles/bigquery.connectionUser
:可讓使用者使用連線連結外部資料來源,並對這些資料來源執行查詢。roles/bigquery.connectionAdmin
:讓使用者管理連線。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱「預先定義的角色與權限」一文。
選取下列選項之一:
主控台
前往「BigQuery」頁面
連線會列在專案中,位於名為「External connections」的群組中。
在「Explorer」窗格中,依序點選「專案名稱」>「外部連線」>「連線」。
在「Details」窗格中,按一下「Share」,即可分享連線。接著,按照下列步驟操作:
在「Connection permissions」對話方塊中,新增或編輯主體,與其他主體共用連線。
按一下 [儲存]。
bq
您無法透過 bq 指令列工具共用連線。如要分享連線,請使用 Google Cloud 主控台或 BigQuery Connections API 方法。
API
請使用 BigQuery Connections REST API 參考資料部分的 projects.locations.connections.setIAM
方法,並提供 policy
資源的例項。
Java
在嘗試這個範例之前,請先按照 BigQuery 快速入門:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
後續步驟
- 瞭解不同的連線類型。
- 瞭解如何管理連線。
- 瞭解 BigLake 資料表。
- 瞭解如何建立 BigLake 資料表。
- 瞭解如何將外部資料表升級為 BigLake 資料表。
- 瞭解物件資料表及其建立方式。
- 瞭解如何實作遠端函式。
- 瞭解如何建立 Spanner 外部資料集。