建立及設定 Cloud 資源連線
BigQuery 管理員可以建立 Cloud 資源連線,讓資料分析師執行下列工作:
- 使用 BigLake 資料表查詢結構化 Cloud Storage 資料。BigLake 資料表可讓您透過存取權委派功能查詢外部資料。
- 使用物件資料表查詢 Cloud Storage 中的非結構化資料。
- 使用 Cloud Run functions 或 Cloud Run 中支援的任何語言,實作遠端函式。
- 使用 Spanner 外部資料集查詢 Spanner 資料。 使用 Cloud Resource 連線的 Spanner 外部資料集可讓您透過存取權委派功能,查詢外部資料來源。
如要進一步瞭解連線,請參閱「連線簡介」。
事前準備
啟用 BigQuery Connection API。
-
如要取得建立 Cloud Resource 連線所需的權限,請要求管理員授予下列 IAM 角色:
-
專案的 BigQuery 連線管理員 (
roles/bigquery.connectionAdmin
) -
Storage 物件檢視者 (
roles/storage.objectViewer
) 在 bucket 上
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
如要使用以 Cloud Storage 為基礎的 BigLake 資料表查詢結構化資料,或使用物件資料表查詢非結構化資料,與連線相關聯的服務帳戶也必須在包含外部資料的 bucket 中,具備 Storage 檢視者 (roles/storage.viewer
) 角色。
-
專案的 BigQuery 連線管理員 (
- 確認 Google Cloud SDK 版本為 366.0.0 以上:
gcloud version
位置注意事項
使用 Cloud Storage 儲存資料檔案時,建議您使用 Cloud Storage 單一地區或雙地區值區,以獲得最佳效能,而非多地區值區。
建立 Cloud 資源連線
BigLake 會使用連線存取 Cloud Storage。您可以將這項連線用於單一資料表或一組資料表。
如果已設定預設連線,或您具備 BigQuery 管理員角色,則可略過這個步驟。
建立供遠端模型使用的Cloud 資源連線,並取得連線的服務帳戶。在與上一步建立的資料集相同的位置中建立連線。
選取下列選項之一:
主控台
前往「BigQuery」頁面
在「Explorer」窗格中,按一下
「新增資料」:「新增資料」對話方塊隨即開啟。
在「依條件篩選」窗格的「資料來源類型」部分,選取「商務應用程式」。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Vertex AI
。在「精選資料來源」部分,按一下「Vertex AI」。
按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。
在「連線類型」清單中,選取「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 與管理) 頁面。
按一下
「新增」。「新增主體」對話方塊隨即開啟。
在「新增主體」欄位,輸入先前複製的服務帳戶 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」窗格中,依序點選專案名稱 >「外部連線」>「連線」。
在「詳細資料」窗格中,按一下「分享」即可分享連線。 接著,按照下列步驟操作:
在「連線權限」對話方塊中,新增或編輯主體,與其他主體共用連線。
按一下 [儲存]。
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 外部資料集。