建立及設定 Cloud 資源連結
BigQuery 的 Cloud 資源連結可讓您使用具備委派存取權的專屬服務帳戶,將 BigQuery 連結至其他 Google Cloud 服務和外部儲存空間。您可以建立及共用 Cloud 資源連結,讓資料分析師查詢外部資料、執行遠端函式及使用遠端模型,不必直接管理憑證。
支援的工作
資料分析師可透過 Cloud 資源連結執行下列工作:
- 使用 BigLake 資料表查詢結構化 Cloud Storage 資料。BigLake 資料表可讓您透過存取權委派功能查詢外部資料。
- 使用物件資料表查詢 Cloud Storage 中的非結構化資料。
- 在 Cloud Run functions 或 Cloud Run 中,使用任何支援的語言實作遠端函式。
- 使用 Spanner 外部資料集查詢 Spanner 資料。Spanner 外部資料集可透過 Cloud 資源連結,使用委派存取權查詢外部資料來源。
- 使用 BigQuery ML 遠端模型執行生成式 AI 任務。
如要進一步瞭解連線,請參閱「連線簡介」。
事前準備
啟用 BigQuery Connection API。
-
如要取得建立 Cloud 資源連結所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的 BigQuery 連線管理員 (
roles/bigquery.connectionAdmin) - 值區的 Storage 物件檢視者 (
roles/storage.objectViewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
如要使用以 Cloud Storage 為基礎的 BigLake 資料表查詢結構化資料,或使用物件資料表查詢非結構化資料,則與連線相關聯的服務帳戶也必須具備 Storage 檢視者 (roles/storage.viewer)、Storage 物件使用者 (roles/storage.objectUser) 和 Storage 舊版 bucket 讀取者 (roles/storage.legacyBucketReader) 角色,才能存取含有外部資料的 bucket。
- 專案的 BigQuery 連線管理員 (
- 確認 Google Cloud SDK 版本為 366.0.0 以上:
gcloud version
如有需要,請更新 Google Cloud SDK。
位置考量
使用 Cloud Storage 儲存資料檔案時,建議使用 Cloud Storage 單區域或雙區域 bucket,不要使用多區域 bucket,以達到最佳效能。
建立 Cloud 資源連結
BigLake 會透過連線存取 Cloud Storage。這項連線可與單一資料表或一組資料表搭配使用。
如果您已設定預設連線,或具備 BigQuery 管理員角色,則可略過這個步驟。
建立遠端模型要使用的 Cloud 資源連結,並取得連結的服務帳戶。建立連線時,請選擇與上一步建立的資料集相同的位置。
選取下列選項之一:控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案名稱,然後點選「Connections」(連線)。
在「Connections」(連線) 頁面,按一下「Create connection」(建立連線)。
在「連線類型」部分,選擇「Vertex AI 遠端模型、遠端函式、BigLake 和 Spanner (Cloud 資源)」。
在「連線 ID」欄位輸入連線名稱。
在「位置類型」部分,選取連線位置。連線應與資料集等其他資源位於相同位置。
點選「建立連線」。
點選「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以便在後續步驟中使用。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE CONNECTION [IF NOT EXISTS] `CONNECTION_NAME` OPTIONS ( connection_type = "CLOUD_RESOURCE", friendly_name = "FRIENDLY_NAME", description = "DESCRIPTION" );
替換下列內容:
-
CONNECTION_NAME:連線名稱,格式為PROJECT_ID.LOCATION.CONNECTION_ID、LOCATION.CONNECTION_ID或CONNECTION_ID。如果省略專案或位置,系統會根據執行陳述式的專案和位置推論。 -
FRIENDLY_NAME(選用):連線的描述性名稱。 -
DESCRIPTION(選用):連線說明。
-
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
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"}
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
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 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
將存取權授予服務帳戶
如要建立遠端函式,您必須將必要角色授予 Cloud Run functions 或 Cloud Run。
如要連線至 Cloud Storage,您必須為新連線授予 Cloud Storage 唯讀存取權,讓 BigQuery 能夠代使用者存取檔案。
選取下列選項之一:
控制台
建議您將 Storage 物件使用者 IAM 角色 (roles/storage.objectUser) 授予連線資源的服務帳戶,這樣該帳戶就能存取 Cloud Storage bucket。
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下「Grant access」(授予存取權)。
「Add principals」(新增主體) 對話方塊隨即開啟。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object User」(Storage 物件使用者)。
按一下 [儲存]。
SQL
使用 GRANT 陳述式:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
GRANT `roles/storage.objectUser` ON PROJECT `PROJECT_ID` TO "connection:CONNECTION_NAME";
替換下列內容:
-
PROJECT_ID:Cloud Storage bucket 所在的專案。 -
CONNECTION_NAME:連線名稱,格式為PROJECT_ID.LOCATION.CONNECTION_ID或LOCATION.CONNECTION_ID。如果省略專案,系統會從執行陳述式的專案推斷。
-
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
gcloud
使用 gcloud storage buckets add-iam-policy-binding 指令:
gcloud storage buckets add-iam-policy-binding gs://BUCKET \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectUser
更改下列內容:
BUCKET:storage bucket 的名稱。MEMBER:您先前複製的服務帳戶 ID。
詳情請參閱「將主體新增至 bucket 層級政策」。
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 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。
與使用者共用連線
您可以授予下列角色,讓使用者查詢資料及管理連結:
roles/bigquery.connectionUser:可讓使用者透過連線,連至外部資料來源並執行查詢。roles/bigquery.connectionAdmin:可讓使用者管理連線。
如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「預先定義的角色和權限」。
選取下列選項之一:
控制台
前往「BigQuery」頁面。
連線會列在專案的「連線」群組中。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
依序點選專案和「連線」,然後選取連線。
在「詳細資料」窗格中,按一下「共用」即可共用連線。接著,按照下列步驟操作:
在「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 外部資料集。