快速部署解決方案:數據分析湖倉

Last reviewed 2025-01-13 UTC

本指南可協助您瞭解、部署及使用「數據分析湖倉」快速部署解決方案。這個解決方案說明如何建立 Analytics Lakehouse,使用統一資料堆疊來儲存、處理、分析及運用資料,進而統合資料湖泊和資料倉儲。

建構數據分析湖倉的常見用途包括:

  • 結合回報資料,大規模分析遙測資料。
  • 統一結構化和非結構化資料分析。
  • 為資料倉儲提供即時分析功能。

本文件適用於具備資料分析背景知識,且曾使用資料庫或資料湖進行分析的開發人員。我們假設您熟悉基本的雲端概念,但不一定是Google Cloud。具備 Terraform 使用經驗會有所幫助。

目標

  • 瞭解如何設定 Analytics Lakehouse。
  • 使用通用治理層保護數據分析湖倉。
  • 根據資料建立資訊主頁,執行資料分析作業。
  • 建立機器學習模型,預測資料值隨時間變化。

使用的產品

這個解決方案使用下列 Google Cloud 產品:

  • BigQuery:具備內建機器學習功能的全代管資料倉儲,可提供高擴充性。
  • Dataproc:全代管服務,可大規模進行資料湖泊現代化、ETL 和安全數據資料學作業。
  • Looker Studio:自助式商業智慧平台,可協助您建立及分享資料洞察。
  • Dataplex Universal Catalog:集中探索、管理、監控及控管大量資料。
  • Cloud Storage:這項企業級服務可為多種資料類型提供低成本且無限制的物件儲存空間。資料可以在Google Cloud 內部和外部存取,且會以異地備援的形式備份。
  • BigLake:BigLake 是一種儲存引擎,透過精細的存取權控管機制讓 BigQuery 和 Spark 等開放原始碼架構存取資料,藉此統合資料倉儲和資料湖泊。

下列 Google Cloud 產品可用於將解決方案中的資料暫存,以便首次使用:

  • 工作流程:全代管的自動化調度管理平台,可按照特定順序執行服務,做為工作流程。工作流程可以結合多項服務,包括在 Cloud Run 或 Cloud Run 函式中代管的自訂服務、Google Cloud BigQuery 等服務,以及任何以 HTTP 為基礎的 API。

架構

這個解決方案部署的示例湖倉架構會分析電子商務資料集,瞭解零售商的長期成效。下圖顯示解決方案部署的 Google Cloud 資源架構。

資料倉儲解決方案基礎架構。

解決方案流程

這個架構代表在 Analytics Lakehouse 架構中填入及轉換資料的常見資料流程:

  1. 資料會存放在 Cloud Storage 值區。
  2. Dataplex Universal Catalog 中建立資料湖泊。在資料湖泊內,值區中的資料會按照實體或資料表分門別類
  3. 資料湖泊中的資料表會以 BigLake 資料表的形式,立即顯示在 BigQuery 中。
  4. 使用 Dataproc 或 BigQuery 轉換資料,並搭配 Apache Iceberg 等開放檔案格式。
  5. 可以使用政策標記和資料列存取政策來保護資料。
  6. 可以對資料表套用機器學習功能。
  7. 透過資料建立資訊主頁,使用 Looker Studio 執行更多數據分析作業。

費用

如要預估分析資料湖解決方案使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中預先計算的預估費用。

您可以使用預估值做為起點,計算部署作業的費用。您可以修改預估值,反映您打算對解決方案中使用的資源進行的任何設定變更。

預先計算的預估值是根據特定因素的假設計算得出,包括:

  • 資源部署的 Google Cloud 位置。
  • 資源的使用時間。

事前準備

如要部署這項解決方案,您必須先具備 Google Cloud 專案和部分 IAM 權限。

建立或選擇 Google Cloud 專案

部署解決方案時,您會選擇部署資源的 Google Cloud 專案。您可以建立新專案,也可以使用現有專案進行部署。

如要建立新專案,請在開始部署前建立。使用新專案有助於避免與先前佈建的資源發生衝突,例如用於實際工作負載的資源。

如要建立專案,請完成下列步驟:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

取得必要的 IAM 權限

如要開始部署程序,您必須具備下表所列的 Identity and Access Management (IAM) 權限。

如果您為這個解決方案建立了新專案,則您在該專案中擁有 roles/owner「基本角色」,並具備所有必要權限。如果您沒有 roles/owner 角色,請要求管理員授予這些權限 (或包含這些權限的角色)。

所需的 IAM 權限 包含必要權限的預先定義角色

serviceusage.services.enable

服務使用情形管理員
(roles/serviceusage.serviceUsageAdmin)

iam.serviceAccounts.create

服務帳戶管理員
(roles/iam.serviceAccountAdmin)

resourcemanager.projects.setIamPolicy

專案 IAM 管理員
(roles/resourcemanager.projectIamAdmin)
config.deployments.create
config.deployments.list
Cloud Infrastructure Manager 管理員
(roles/config.admin)
iam.serviceAccount.actAs 服務帳戶使用者
(roles/iam.serviceAccountUser)

關於臨時服務帳戶權限

如果您透過控制台啟動部署程序,Google 會建立服務帳戶,代表您部署解決方案 (並在您選擇的時間點刪除部署作業)。系統會暫時為這個服務帳戶指派特定的 IAM 權限,也就是說,在解決方案部署和刪除作業完成後,系統會自動撤銷權限。Google 建議您在刪除部署後刪除服務帳戶,如本指南稍後所述。

查看指派給服務帳戶的角色

這些角色會列於此處,以便Google Cloud 專案或機構的管理員需要時參考。

  • roles/biglake.admin
  • roles/bigquery.admin
  • roles/compute.admin
  • roles/datalineage.viewer
  • roles/dataplex.admin
  • roles/dataproc.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/servicenetworking.serviceAgent
  • roles/serviceusage.serviceUsageViewer
  • roles/vpcaccess.admin
  • roles/storage.admin
  • roles/workflows.admin

部署解決方案

本節將逐步引導您完成部署解決方案的程序。

為了讓您以最少的力氣部署這個解決方案,GitHub 提供了 Terraform 設定。Terraform 設定會定義解決方案所需的所有Google Cloud 資源。

您可以使用下列任一方法部署解決方案:

  • 透過控制台:如果您想嘗試使用預設設定的解決方案,並瞭解其運作方式,請使用這個方法。Cloud Build 會部署解決方案所需的所有資源。當您不再需要已部署的解決方案時,可以透過控制台刪除。您在部署解決方案後建立的任何資源可能需要個別刪除。

    如要使用這項部署方法,請按照「透過控制台部署」一文中的操作說明進行。

  • 使用 Terraform CLI:如果您想自訂解決方案,或是想使用基礎架構即程式碼 (IaC) 方法自動佈建及管理資源,請使用這個方法。從 GitHub 下載 Terraform 設定,視需要自訂程式碼,然後使用 Terraform CLI 部署解決方案。部署解決方案後,您可以繼續使用 Terraform 管理解決方案。

    如要使用這種部署方法,請按照「使用 Terraform CLI 部署」一文中的操作說明進行。

透過控制台部署

完成下列步驟,即可部署預先設定的解決方案。

  1. 在 Google Cloud 「Jump Start Solutions」(快速部署解決方案) 目錄中,前往「數據分析湖倉」解決方案。

    前往數據分析湖倉解決方案

  2. 查看頁面上提供的資訊,例如解決方案的預估成本和預估部署時間。

  3. 準備好開始部署解決方案時,請按一下「Deploy」(部署)

    畫面上會顯示逐步設定窗格。

  4. 完成設定窗格中的步驟。

    請記下您為部署作業輸入的名稱。日後刪除部署作業時,系統會要求您提供這個名稱。

    按一下「Deploy」後,系統會顯示「Solution deployments」頁面。這個頁面上的「狀態」欄位會顯示「部署中」

  5. 等待解決方案部署完成。

    如果部署失敗,「狀態」欄位會顯示「失敗」。您可以使用 Cloud Build 記錄來診斷錯誤。詳情請參閱「透過控制台部署時發生錯誤」一文。

    部署完成後,「Status」欄位會變更為「Deployed」

  6. 如要查看及使用解決方案,請返回控制台的「Solution deployments」頁面。

    1. 按一下 「動作」選單。
    2. 選取「View Looker Studio Dashboard」,即可開啟以使用解決方案轉換的範例資料建立的資訊主頁。
    3. 選取「Open BigQuery Editor」,即可執行查詢,並使用解決方案中的範例資料建立機器學習 (ML) 模型。
    4. 選取「View Colab」,即可在筆記本環境中執行查詢。

不再需要解決方案時,您可以刪除部署作業,避免繼續產生 Google Cloud 資源費用。詳情請參閱「刪除部署項目」。

使用 Terraform CLI 部署

本節說明如何使用 Terraform CLI 自訂解決方案,或自動佈建及管理解決方案。使用 Terraform CLI 部署的解決方案不會顯示在 Google Cloud 控制台的「Solution deployments」頁面中。

設定 Terraform 用戶端

您可以在 Cloud Shell 或本機主機上執行 Terraform。本指南說明如何在 Cloud Shell 中執行 Terraform,Cloud Shell 已預先安裝 Terraform,並設定為使用 Google Cloud進行驗證。

這個解決方案的 Terraform 程式碼位於 GitHub 存放區中。

  1. 將 GitHub 存放區複製到 Cloud Shell。

    在 Cloud Shell 開啟

    系統會顯示提示,要求您確認是否要將 GitHub 存放區下載到 Cloud Shell。

  2. 按一下「確認」。

    Cloud Shell 會在個別的瀏覽器分頁中啟動,Terraform 程式碼會下載至 Cloud Shell 環境的 $HOME/cloudshell_open 目錄。

  3. 在 Cloud Shell 中,檢查目前的工作目錄是否為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/。這是含有解決方案 Terraform 設定檔的目錄。如要變更至該目錄,請執行下列指令:

    cd $HOME/cloudshell_open/terraform-google-analytics-lakehouse/
    
  4. 執行下列指令,初始化 Terraform:

    terraform init
    

    等到畫面顯示下列訊息:

    Terraform has been successfully initialized!
    

設定 Terraform 變數

您下載的 Terraform 程式碼包含變數,可用於根據您的需求自訂部署作業。例如,您可以指定要部署解決方案的 Google Cloud 專案和地區

  1. 請確認目前的工作目錄為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/。如果不是,請前往該目錄。

  2. 在同一個目錄中建立名為 terraform.tfvars 的文字檔案。

  3. terraform.tfvars 檔案中,複製以下程式碼片段,並設定必要變數的值。

    • 按照程式碼片段中提供的註解操作說明操作。
    • 這個程式碼片段只包含您「必須」設定值的變數。Terraform 設定包含其他具有預設值的變數。如要查看所有變數和預設值,請參閱 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/ 目錄中提供的 variables.tf 檔案。
    • 請確認您在 terraform.tfvars 檔案中設定的每個值,都與 variables.tf 檔案中宣告的變數類型相符。舉例來說,如果 variables.tf 檔案中為變數定義的類型為 bool,則您必須在 terraform.tfvars 檔案中將 truefalse 指定為該變數的值。
    # This is an example of the terraform.tfvars file.
    # The values in this file must match the variable types declared in variables.tf.
    # The values in this file override any defaults in variables.tf.
    
    # ID of the project in which you want to deploy the solution
    project_id = "PROJECT_ID"
    
    # Google Cloud region where you want to deploy the solution
    # Example: us-central1
    region = "REGION"
    
    # Whether or not to enable underlying apis in this solution.
    # Example: true
    enable_apis = true
    
    # Whether or not to protect Cloud Storage and BigQuery resources from deletion when solution is modified or changed.
    # Example: false
    force_destroy = false
    

驗證並查看 Terraform 設定

  1. 請確認目前的工作目錄為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/。如果不是,請前往該目錄。

  2. 確認 Terraform 設定沒有錯誤:

    terraform validate
    

    如果指令傳回任何錯誤,請在設定中進行必要的修正,然後再次執行 terraform validate 指令。重複執行這個步驟,直到指令傳回以下訊息為止:

    Success! The configuration is valid.
    
  3. 檢閱設定中定義的資源:

    terraform plan
    
  4. 如果您未按照前述說明建立 terraform.tfvars 檔案,Terraform 會提示您輸入沒有預設值的變數值。輸入必要值。

    terraform plan 指令的輸出內容是 Terraform 在您套用設定時,所提供資源的清單。

    如要進行任何變更,請編輯設定,然後再次執行 terraform validateterraform plan 指令。

佈建資源

如果 Terraform 設定不需要進一步變更,請部署資源。

  1. 請確認目前的工作目錄為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/。如果不是,請前往該目錄。

  2. 套用 Terraform 設定:

    terraform apply
    
  3. 如果您未按照前述說明建立 terraform.tfvars 檔案,Terraform 會提示您輸入沒有預設值的變數值。輸入必要值。

    Terraform 會顯示將要建立的資源清單。

  4. 系統提示你執行動作時,請輸入 yes

    Terraform 會顯示訊息,說明部署作業的進度。

    如果無法完成部署作業,Terraform 會顯示導致失敗的錯誤。請查看錯誤訊息並更新設定,以便修正錯誤。然後再次執行 terraform apply 指令。如需 Terraform 錯誤疑難排解說明,請參閱「使用 Terraform CLI 部署解決方案時發生的錯誤」。

    所有資源都建立完成後,Terraform 會顯示下列訊息:

    Apply complete!
    

    Terraform 輸出內容也會列出您需要的下列其他資訊:

    • 已部署的資訊主頁 Looker Studio 網址。
    • 開啟 BigQuery 編輯器的連結,可用於查看部分查詢範例。
    • 開啟 Colab 教學課程的連結。

    以下範例顯示輸出內容的樣子:

    lookerstudio_report_url = "https://lookerstudio.google.com/reporting/create?c.reportId=79675b4f-9ed8-4ee4-bb35-709b8fd5306a&ds.ds0.datasourceName=vw_ecommerce&ds.ds0.projectId=${var.project_id}&ds.ds0.type=TABLE&ds.ds0.datasetId=gcp_lakehouse_ds&ds.ds0.tableId=view_ecommerce"
    bigquery_editor_url = "https://console.cloud.google.com/bigquery?project=my-cloud-project&ws=!1m5!1m4!6m3!1smy-cloud-project!2sds_edw!3ssp_sample_queries"
    lakehouse_colab_url = "https://colab.research.google.com/github/GoogleCloudPlatform/terraform-google-analytics-lakehouse/blob/main/assets/ipynb/exploratory-analysis.ipynb"
    
  5. 如要查看及使用資訊主頁,並在 BigQuery 中執行查詢,請複製上一個步驟的輸出網址,然後在新瀏覽器分頁中開啟這些網址。

    資訊主頁、筆記本和 BigQuery 編輯器會顯示在新分頁中。

不再需要解決方案時,您可以刪除部署作業,避免繼續產生 Google Cloud 資源費用。詳情請參閱「刪除部署項目」。

自訂解決方案

本節提供的資訊可供 Terraform 開發人員修改 Analytics Lakehouse 解決方案,以滿足自身的技術和業務需求。只有在您使用 Terraform CLI 部署解決方案時,本節的說明才適用。

瞭解解決方案如何處理範例資料後,您可能會想使用自己的資料。如要使用自己的資料,請將資料放入名為 edw-raw-hash 的 Cloud Storage 值區。雜湊是部署期間產生的 8 個隨機字元組合。您可以透過下列方式變更 Terraform 程式碼:

  1. 資料集 ID:變更 Terraform 程式碼,讓程式碼在建立 BigQuery 資料集時,使用您要用於資料的資料集 ID。
  2. 結構定義。變更 Terraform 程式碼,讓程式碼建立您要用來儲存資料的 BigQuery 資料表 ID。這包括外部資料表結構定義,以便 BigQuery 讀取 Cloud Storage 中的資料。
  3. 區域。建立符合業務需求的湖泊區 (通常根據資料品質和用途劃分兩或三個區)。
  4. Looker 資訊主頁。變更建立 Looker 資訊主頁的 Terraform 程式碼,讓資訊主頁顯示您使用的資料。
  5. PySpark 工作。變更 Terraform 程式碼,使用 Dataproc 執行 PySpark 工作。

以下是常見的 Analytics Lakehouse 物件,並顯示 main.tf 中的 Terraform 範例程式碼。

  • BigQuery 資料集:資料庫物件分組及儲存的結構定義。

    resource "google_bigquery_dataset" "ds_edw" {
          project = module.project-services.project_id
          dataset_id = "DATASET_PHYSICAL_ID"
          friendly_name = "DATASET_LOGICAL_NAME"
          description = "DATASET_DESCRIPTION"
          location = "REGION"
          labels = var.labels
          delete_contents_on_destroy = var.force_destroy
      }
  • BigQuery 資料表:代表儲存在 BigQuery 中的資料,或代表儲存在 Cloud Storage 中的資料結構定義的資料庫物件。

    resource "google_bigquery_table" "tbl_edw_taxi" {
          dataset_id = google_bigquery_dataset.ds_edw.dataset_id
          table_id = "TABLE_NAME"
          project = module.project-services.project_id
          deletion_protection = var.deletion_protection
          ...
      }
  • BigQuery 儲存程序:代表一或多個 SQL 陳述式的資料庫物件,會在呼叫時執行。這可能會將資料從一個資料表轉換至另一個資料表,或是將外部資料表中的資料載入至標準資料表。

    resource "google_bigquery_routine" "sp_sample_translation_queries" {
          project = module.project-services.project_id
          dataset_id = google_bigquery_dataset.ds_edw.dataset_id
          routine_id = "sp_sample_translation_queries"
          routine_type = "PROCEDURE"
          language = "SQL"
          definition_body = templatefile("${path.module}/assets/sql/sp_sample_translation_queries.sql", { project_id = module.project-services.project_id })
        }
  • Cloud Workflows 工作流程: Workflows 工作流程代表按特定順序執行的步驟組合。您可以使用這項功能設定資料,或搭配其他執行步驟執行資料轉換作業。

    resource "google_workflows_workflow" "copy_data" {
        name            = "copy_data"
        project         = module.project-services.project_id
        region          = var.region
        description     = "Copies data and performs project setup"
        service_account = google_service_account.workflows_sa.email
        source_contents = templatefile("${path.module}/src/yaml/copy-data.yaml", {
            public_data_bucket    = var.public_data_bucket,
            textocr_images_bucket = google_storage_bucket.textocr_images_bucket.name,
            ga4_images_bucket     = google_storage_bucket.ga4_images_bucket.name,
            tables_bucket         = google_storage_bucket.tables_bucket.name,
            dataplex_bucket       = google_storage_bucket.dataplex_bucket.name,
            images_zone_name      = google_dataplex_zone.gcp_primary_raw.name,
            tables_zone_name      = google_dataplex_zone.gcp_primary_staging.name,
            lake_name             = google_dataplex_lake.gcp_primary.name
        })
        }
        

如要自訂解決方案,請在 Cloud Shell 中完成下列步驟:

  1. 確認目前的工作目錄為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse。如果不是,請前往該目錄:

    cd $HOME/cloudshell_open/terraform-google-analytics-lakehouse
    
  2. 開啟 main.tf,然後進行所需變更。

    如要進一步瞭解這類自訂項目對可靠性、安全性、效能、成本和作業的影響,請參閱設計建議

  3. 驗證並查看 Terraform 設定

  4. 佈建資源

設計建議

本節將提供使用 Analytics Lakehouse 解決方案的建議,協助您開發符合安全性、可靠性、成本和效能需求的架構。

開始擴充 Lakehouse 解決方案時,您可以使用多種方式改善查詢效能,並降低總支出。這些方法包括變更資料的實際儲存方式、修改 SQL 查詢,以及變更使用不同技術執行查詢的方式。如要進一步瞭解如何最佳化 Spark 工作負載,請參閱實際工作環境的 Dataproc 最佳做法

注意事項:

  • 進行任何設計變更前,請評估成本影響,並考量與其他功能的潛在取捨。您可以使用 Google Cloud Pricing Calculator,評估設計變更對成本的影響。
  • 如要在解決方案中實作設計變更,您需要具備 Terraform 程式設計技能,並具備解決方案中使用的 Google Cloud 服務的進階知識。
  • 如果您修改 Google 提供的 Terraform 設定,但之後發生錯誤,請在 GitHub 中建立問題。GitHub 問題會盡可能審查,但不提供一般使用問題的諮詢服務。
  • 如要進一步瞭解如何在 Google Cloud中設計及設定正式版環境,請參閱「 Google Cloud中的到達區設計」和「Google Cloud 設定檢查清單」。

刪除解決方案部署作業

不再需要解決方案部署作業時,請刪除部署作業,以免繼續產生您建立的資源費用。

透過控制台刪除部署

如果您是透過控制台部署解決方案,請使用這個程序。

  1. 在 Google Cloud 控制台中,前往「Solution deployments」(解決方案部署項目) 頁面。

    前往「Solution deployments」(解決方案部署項目)

  2. 選取包含要刪除的部署作業的專案。

  3. 找出要刪除的部署。

  4. 在部署作業的資料列中,按一下 「Actions」(動作),然後選取「Delete」(刪除)

    您可能需要捲動畫面才能看到資料列中的「動作」

  5. 輸入部署名稱,然後按一下「確認」

    「狀態」欄位顯示「刪除中」

    如果刪除作業失敗,請參閱刪除部署作業時發生錯誤一文中的疑難排解指南。

如果您不再需要用於解決方案的 Google Cloud 專案,可以刪除該專案。詳情請參閱「選用:刪除專案」。

使用 Terraform CLI 刪除部署作業

如果您是使用 Terraform CLI 部署解決方案,請使用這個程序。

  1. 在 Cloud Shell 中,確認目前的工作目錄為 $HOME/cloudshell_open/terraform-google-analytics-lakehouse/。如果不是,請前往該目錄。

  2. 移除 Terraform 佈建的資源:

    terraform destroy
    

    Terraform 會顯示即將刪除的資源清單。

  3. 系統提示你執行動作時,請輸入 yes

    Terraform 會顯示訊息,顯示進度。刪除所有資源後,Terraform 會顯示以下訊息:

    Destroy complete!
    

    如果刪除作業失敗,請參閱刪除部署作業時發生錯誤一文中的疑難排解指南。

如果您不再需要用於解決方案的 Google Cloud 專案,可以刪除該專案。詳情請參閱「選用:刪除專案」。

選用步驟:刪除專案

如果您在新的 Google Cloud 專案中部署解決方案,且已不再需要該專案,請完成下列步驟將其刪除:

  1. 前往 Google Cloud 控制台的「管理資源」頁面。

    前往「管理資源」

  2. 在專案清單中選取要刪除的專案,然後按一下「刪除」
  3. 輸入提示中的專案 ID,然後按一下「Shut down」

如果您決定保留專案,請按照下一個章節的說明,刪除為此解決方案建立的服務帳戶。

選用:刪除服務帳戶

如果您已刪除用於解決方案的專案,請略過本節。

如本指南前述,在您部署解決方案時,系統會代您建立服務帳戶。服務帳戶會暫時指派特定的 IAM 權限,也就是在解決方案部署和刪除作業完成後,系統會自動撤銷權限,但不會刪除服務帳戶。Google 建議您刪除這個服務帳戶。

  • 如果您是透過 Google Cloud 控制台部署解決方案,請前往「Solution deployments」頁面。(如果您已在該頁面,請重新整理瀏覽器)。系統會在背景觸發程序來刪除服務帳戶。因此您不需要採取進一步行動。

  • 如果您是使用 Terraform CLI 部署解決方案,請完成下列步驟:

    1. 前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。

      前往「Service accounts」(服務帳戶)

    2. 選取用於解決方案的專案。

    3. 選取要刪除的服務帳戶。

      為解決方案建立的服務帳戶電子郵件 ID 格式如下:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      電子郵件 ID 包含下列值:

      • DEPLOYMENT_NAME:部署作業的名稱。
      • NNN:隨機的 3 位數字。
      • PROJECT_ID:您部署解決方案的專案 ID。
    4. 點選「刪除」。

排解錯誤

您可以採取的診斷和解決錯誤的行動,取決於部署方法和錯誤的複雜程度。

透過控制台部署解決方案時發生錯誤

如果您在使用控制台時發生部署失敗問題,請執行下列操作:

  1. 前往「Solution deployments」(解決方案部署項目) 頁面。

    如果部署失敗,狀態欄位會顯示「失敗」

  2. 查看導致失敗的錯誤詳細資料:

    1. 在部署作業列中,按一下 「動作」

      您可能需要捲動畫面才能看到資料列中的「動作」

    2. 選取「查看 Cloud Build 記錄」

  3. 查看 Cloud Build 記錄,並採取適當行動,解決導致失敗的問題。

使用 Terraform CLI 部署解決方案時發生錯誤

如果使用 Terraform 時部署作業失敗,terraform apply 指令的輸出內容會包含錯誤訊息,您可以查看這些訊息來診斷問題。

以下各節的範例說明您在使用 Terraform 時可能會遇到的部署錯誤。

API 未啟用錯誤

如果您建立專案後,立即嘗試在新專案中部署解決方案,部署作業可能會失敗,並顯示類似下列的錯誤訊息:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

如果發生此錯誤,請稍候幾分鐘,然後再次執行 terraform apply 指令。

無法指派要求的地址錯誤

執行 terraform apply 指令時,可能會發生 cannot assign requested address 錯誤,並顯示類似以下的訊息:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

如果發生這個錯誤,請再次執行 terraform apply 指令。

在 BigQuery 或 Looker Studio 中存取資料時發生錯誤

在 Terraform 佈建步驟將資料載入環境後,會執行佈建步驟。如果資料載入至 Looker Studio 資訊主頁時發生錯誤,或是開始探索 BigQuery 時沒有任何物件,請稍候幾分鐘再試一次。

刪除部署作業時發生錯誤

在某些情況下,刪除部署作業的嘗試可能會失敗:

  • 透過控制台部署解決方案後,如果變更解決方案所佈建的任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。「Solution deployments」頁面上的「Status」欄位顯示「Failed」,Cloud Build 記錄則會顯示錯誤的原因。
  • 使用 Terraform CLI 部署解決方案後,如果您使用非 Terraform 介面 (例如控制台) 變更任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。terraform destroy 指令的輸出內容會顯示錯誤的原因。

請查看錯誤記錄和訊息,找出並刪除導致錯誤的資源,然後再試著刪除部署作業。

如果您無法刪除以主控台為基礎的部署,也無法使用 Cloud Build 記錄診斷錯誤,請使用 Terraform CLI 刪除部署,如下一節所述。

使用 Terraform CLI 刪除以控制台為基礎的部署作業

本節說明如何刪除主控台型部署作業,如果您在透過主控台刪除時發生錯誤,請按照本節說明操作。在這個方法中,您會為要刪除的部署下載 Terraform 設定,然後使用 Terraform CLI 刪除部署。

  1. 找出部署作業的 Terraform 程式碼、記錄和其他資料儲存的區域。這個區域可能與您在部署解決方案時選取的區域不同。

    1. 在 Google Cloud 控制台中,前往「Solution deployments」頁面。

      前往「Solution deployments」(解決方案部署項目)

    2. 選取包含要刪除的部署作業的專案。

    3. 在部署清單中找出要刪除的部署所在的資料列。

    4. 按一下 「查看所有資料列內容」

    5. 在「Location」欄中,請注意「第二個」位置,如以下範例所示:

      部署程式碼、記錄和其他構件的所在位置。

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. 為要刪除的部署建立專案 ID、區域和名稱的環境變數:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    在這些指令中,請這樣取代:

    • REGION:您在本程序中先前記下的地點。
    • PROJECT_ID:部署解決方案的專案 ID。
    • DEPLOYMENT_NAME:要刪除的部署名稱。
  4. 取得要刪除的部署作業最新修訂版本 ID:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    輸出結果會與下列內容相似:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. 取得部署作業的 Terraform 設定檔 Cloud Storage 位置:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    以下是這個指令的輸出範例:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. 從 Cloud Storage 下載 Terraform 設定至 Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/
    

    等到畫面顯示 Operation completed 訊息,如以下範例所示:

    Operation completed over 45 objects/268.5 KiB
    
  7. 初始化 Terraform:

    terraform init
    

    等到畫面顯示下列訊息:

    Terraform has been successfully initialized!
    
  8. 移除已部署的資源:

    terraform destroy
    

    Terraform 會顯示即將刪除的資源清單。

    如果系統顯示未宣告變數的警告,請忽略警告。

  9. 系統提示你執行動作時,請輸入 yes

    Terraform 會顯示訊息,顯示進度。刪除所有資源後,Terraform 會顯示下列訊息:

    Destroy complete!
    
  10. 刪除部署成果:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. 請稍候片刻,然後確認已刪除部署構件:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    如果輸出內容顯示 null,請稍候幾秒鐘,然後再次執行指令。

    刪除部署構件後,系統會顯示以下範例所示的訊息:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

提交意見回饋

快速部署解決方案僅供參考,並非官方支援的產品。Google 可能會變更或移除解決方案,恕不另行通知。

如要排解錯誤,請查看 Cloud Build 記錄和 Terraform 輸出內容。

如要提交意見回饋,請按照下列步驟操作:

  • 如有任何說明文件、控制台內教學課程或解決方案的意見,請使用頁面上的「提供意見」按鈕。
  • 如果是未修改的 Terraform 程式碼,請在 GitHub 存放區中建立問題。GitHub 問題會盡可能審查,但不提供一般使用問題的諮詢服務。
  • 如果解決方案中使用的產品發生問題,請與 Cloud Customer Care 團隊聯絡。

後續步驟