快速部署解決方案:生成式 AI 知識庫

Last reviewed 2024-03-01 UTC

本指南可協助您瞭解及部署生成式 AI 知識庫解決方案。這項解決方案展示如何建構擷取式問答 (EQA) 管道,為內部知識庫生成內容。

EQA 管道會處理文件、從文件中擷取問答組合,並提供結構化資訊,供您微調大型語言模型 (LLM)。舉例來說,您可以上傳包含許多常見問題 (FAQ) 的文件,使用這些常見問題調整 LLM,然後使用訓練好的模型,協助客戶服務專員在解決案件時尋找資訊。

本文適用於具備 LLM 基礎知識的開發人員。並假設您熟悉雲端基本概念。

目標

本解決方案指南可協助您:

  • 部署可從文件中擷取問答組合的應用程式。
  • 部署管道,在文件上傳時觸發應用程式。
  • 使用應用程式的輸出內容,訓練提示型 AI 模型。

架構

這項解決方案會部署生成式 AI 知識庫應用程式。 下圖顯示應用程式基礎架構的架構:

應用程式架構圖:使用 Vertex AI Generative AI 從文件中擷取問答組合

要求流程

下列步驟詳細說明應用程式的要求處理流程。 流程中的步驟已編號,如上方的架構圖所示。

如要啟動 Generative AI Knowledge Base 應用程式,請直接將文件上傳至 Cloud Storage 值區,方法是透過 Google Cloud 控制台或 gcloud 指令列介面。

  1. 文件上傳後,系統會觸發 Cloud Run 函式。 這個函式會執行擷取式問答程序。

  2. 函式會使用 Document AI OCR 擷取文件中的所有文字。

  3. 這個函式會將文件編入 Vector Search 索引。向量搜尋索引會為 LLM 提供脈絡資訊,讓 LLM 僅根據直接從上傳文件擷取的內容,擷取問答配對。

  4. 這個函式會使用 Vertex AI 從文件中擷取並生成問題和答案。

  5. 這項函式會將擷取的問題和答案組合儲存在 Firestore 中。

  6. 系統根據 Firestore 資料庫產生 JSONL 微調資料集,並儲存在 Cloud Storage。

  7. 手動驗證資料集符合需求後,即可在 Vertex AI 上啟動微調工作。

    調整工作完成後,調整後的模型會部署至端點。 部署至端點後,您可以在 Colab 筆記本中將查詢提交至調整過的模型,並與基礎模型進行比較。

使用的產品

本節說明解決方案使用的產品。

如果您熟悉 Terraform 設定語言,可以變更部分服務設定。

元件 產品說明 這項解決方案中的用途
Cloud Storage 這項企業級服務提供低成本、無限制的物件儲存空間,適用於多種資料類型。 儲存 PDF 文件、擷取的文字、調整用資料集和調整後的模型。
Eventarc 這項服務可管理已分離微服務之間的狀態變更 (事件) 流程,將事件路由至各種目的地,同時管理傳送、安全性、授權、觀測能力和錯誤處理工作。 監控 Cloud Storage 值區中的新文件,並在 Cloud Run 函式中觸發事件。
Cloud Run functions 輕量型無伺服器運算服務,可讓您建立獨立的單一用途函式來回應 Google Cloud 事件,不必管理伺服器或執行階段環境。 自動化調度管理文件處理步驟。
Document AI 這項文件解讀平台可將文件中的非結構化資料轉為結構化資料。您可以自動處理繁瑣工作、提升資料擷取作業效率,並從資料中取得更精闢的深入分析結果。 從文件中擷取文字。
Vertex AI 機器學習平台,可讓您訓練、測試、調整及部署 LLM 和生成式 AI 應用程式。 根據文件生成問題和答案。
向量搜尋 這項服務可讓您運用為 Google 搜尋、YouTube 和 Google Play 等 Google 產品奠定基礎的相同基礎架構。 可讓您搜尋嵌入,找出語意相似或相關的實體。
Firestore 全代管的低延遲檔案系統,適用於 VM 和叢集,提供高可用性和高處理量。 儲存生成的問題和答案。

費用

如要估算生成式 AI 知識庫解決方案使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中的預先計算估算值。

您可以根據估算結果,進一步計算部署作業的費用。您可以修改預估值,反映您打算對解決方案中使用的資源進行的任何設定變更。

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

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

  • 儲存在 Cloud Storage 中的資料量。

  • 知識庫應用程式的叫用次數。

  • 用於微調模型的運算資源。

事前準備

如要部署這項解決方案,您必須先擁有 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 角色,請要求管理員授予這些權限 (或包含這些權限的角色)。

所需的身分與存取權管理權限 包含必要權限的預先定義角色

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/aiplatform.user
  • roles/artifactregistry.admin
  • roles/documentai.editor
  • roles/firebase.admin
  • roles/iam.serviceAccountUser
  • roles/serviceusage.serviceUsageAdmin
  • roles/iam.serviceAccountAdmin
  • roles/resourcemanager.projectIamAdmin
  • roles/config.agent

部署解決方案

為協助您輕鬆部署這項解決方案,GitHub 提供 Terraform 設定。Terraform 設定會定義解決方案所需的所有Google Cloud 資源。

您可以透過下列任一方法部署解決方案:

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

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

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

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

透過控制台部署

請按照下列步驟部署預先設定的解決方案。

  1. 在 Google Cloud 快速部署解決方案目錄中,前往「生成式 AI 知識庫」解決方案。

    前往生成式 AI 知識庫解決方案

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

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

    系統會顯示逐步設定窗格。

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

    請記下您輸入的部署作業名稱。您稍後刪除部署作業時,需要使用這個名稱。

    按一下「Deploy」(部署) 後,系統會顯示「Solution deployments」(解決方案部署作業) 頁面。 這個頁面的「狀態」欄位會顯示「部署中」

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

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

    部署完成後,「狀態」欄位會變更為「已部署」

  6. 如要查看已部署的 Google Cloud 資源及其設定,請在控制台中參加互動導覽。

    開始導覽

如需後續步驟,請參閱「使用解決方案」。

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

使用 Terraform CLI 部署

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

設定 Terraform 用戶端

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

您可以在 GitHub 存放區中找到此解決方案的 Terraform 程式碼。

  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-genai-knowledge-base/。這個目錄包含解決方案的 Terraform 設定檔。如要變更為該目錄,請執行下列指令:

    cd $HOME/cloudshell_open/terraform-genai-knowledge-base/
    
  4. 執行下列指令來初始化 Terraform:

    terraform init
    

    等待系統顯示下列訊息:

    Terraform has been successfully initialized!
    

設定 Terraform 變數

您下載的 Terraform 程式碼包含變數,可根據需求自訂部署作業。舉例來說,您可以指定 Google Cloud 專案和區域,讓解決方案部署在這些位置。

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

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

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

    • 按照程式碼片段註解中的指示操作。
    • 這個程式碼片段只包含必須設定值的變數。Terraform 設定包含其他具有預設值的變數。如要查看所有變數和預設值,請參閱 $HOME/cloudshell_open/terraform-genai-knowledge-base/ 目錄中的 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"
    

驗證及檢查 Terraform 設定

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

  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-genai-knowledge-base/。如果不是,請前往該目錄。

  2. 套用 Terraform 設定:

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

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

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

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

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

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

    Apply complete!
    
  5. 如要查看已部署的 Google Cloud 資源及其設定,請在控制台中參加互動導覽。

    開始導覽

接著,您可以使用解決方案,瞭解其運作方式。

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

使用解決方案

部署解決方案後,您可以上傳文件並建立索引,然後詢問相關問題。此外,系統也會產生 JSON lines (JSONL) 調整資料集檔案,可用於提示調整 LLM。

上傳文件並查詢模型

如要開始使用這項解決方案,請上傳文件,然後向預先訓練的 LLM 提出相關問題。

如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導)

逐步引導

這項作業大約需要 10 分鐘才能完成。

調整 LLM

上傳解決方案所需的文件後,您可以使用 Vertex AI,透過問答配對微調 LLM。調整 LLM 並非自動化程序,調整 LLM 前,請檢查資料並確認有效且準確。確認資料沒問題後,您可以手動啟動微調工作,並從模型登錄檔啟動 LLM。

JSONL 調整檔案包含從問答配對中擷取的內容。檔案中的每一行都是 JSON 項目,包含 input_textoutput_text 欄位。input_text 欄位包含每個問題的內容,output_text 則包含每個對應答案的內容。

舉例來說,下列 JSONL 檔案包含「北京有多少人居住」這個問題,以及相應的答案:

{"input_text": "CONTEXT: With over 21 million residents, Beijing is the
 world's most populous national capital city and is China's second largest
 city after Shanghai. QUESTION: How many people live in Beijing?,
"output_text": "21 million people"}

如要直接在 Google Cloud 控制台按照逐步指南微調模型,請按一下「Guide me」(逐步引導)

逐步引導

完成本逐步導覽約需 10 分鐘,但模型調整作業可能需要一小時以上的時間才能處理完畢。

刪除部署作業

不再需要解決方案時,請刪除部署作業。刪除部署項目後,您就不必再為建立的資源付費。

刪除前的注意事項

刪除這項解決方案前,請先刪除 Vector Search 索引部署作業:

  1. 前往「Vector Search」頁面。

    前往 Vector Search

  2. 按一下 [knowledge-base-index]

  3. 在「Deployed indexes」(已部署的索引) 下方,按一下 more_vert「More」(更多)

  4. 按一下「Undeploy」(取消部署)

您不必等待索引刪除程序完成。

透過控制台刪除

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

  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-genai-knowledge-base/。如果不是,請前往該目錄。

  2. 移除 Terraform 佈建的資源:

    terraform destroy
    

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

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

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

    Destroy complete!
    

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

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

刪除微調模型

您必須手動刪除微調模型。

如要刪除調整後的模型,請參閱「從 Vertex AI Model Registry 刪除模型」。

選用:刪除專案

如果您是在新 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 指令。

設定錯誤

如果您在 main.tf 檔案中修改資源引數,並使用不支援的值,就會發生類似下列的錯誤:

Error: Error creating Instance: googleapi: Error 400: Provided Redis version is
not supported: REDIS_5_X
│ com.google.apps.framework.request.StatusException:
  <eye3 title='INVALID_ARGUMENT'/>
  generic::INVALID_ARGUMENT: Provided Redis version is not supported: REDIS_5_X
Details:
│ [>
│   {
│     "@type": "type.googleapis.com/google.rpc.BadRequest",
│     "fieldViolations": [
│       {
│         "description": "Invalid value: REDIS_5_X",
│         "field": "instance.redis_version"
│       }
│     ]
│   }
│ ]
│
│   with google_redis_instance.main,
│   on main.tf line 96, in resource "google_redis_instance" "main":
│   96: resource "google_redis_instance" "main" {

在本例中,意圖是使用 Redis 第 5 版,但 main.tf 檔案中為 instance.redis_version 引數 (REDIS_5_X) 指定的值無效。正確值為 REDIS_5_0,如Memorystore REST API 說明文件所列。

刪除部署作業時發生錯誤

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

  • 透過控制台部署解決方案後,如果您變更解決方案佈建的任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。「解決方案部署作業」頁面的「狀態」欄位會顯示「失敗」,而 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
    
  12. 提交意見回饋

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

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

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

    • 如要提供說明文件、控制台內教學課程或解決方案的意見,請使用頁面上的「提供意見」按鈕。
    • 如為未修改的 Terraform 程式碼,請在 GitHub 存放區中建立問題。我們會盡可能審查 GitHub 問題,但這並非一般使用問題的適用管道。
    • 如要解決解決方案中使用的產品問題,請與 Cloud Customer Care 團隊聯絡。

    後續步驟