刪除 Cloud Functions 中的 AI/機器學習圖片處理作業

Last reviewed 2023-08-29 UTC

本指南說明如何刪除「使用 Cloud Functions 的 AI/機器學習圖片處理流程」快速入門解決方案。您可以按照本指南刪除現有的解決方案部署作業。 您無法再從 Google Cloud 控制台部署 Cloud Functions 的 AI/機器學習圖片處理作業,且這項作業不受支援。

費用

如要估算 Cloud Functions 解決方案的 AI/機器學習圖片處理作業所用資源的費用,請參閱 Google Cloud Pricing Calculator 中的預先計算估算值。 Google Cloud

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

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

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

您也可以查看已部署資源的使用費用。詳情請參閱「查看帳單報表和費用趨勢」一文。

取得必要的 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 權限給這個服務帳戶,也就是在解決方案部署和刪除作業完成後,自動撤銷這些權限。Google 建議您刪除部署作業後,一併刪除服務帳戶,如本指南稍後所述。

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

如果Google Cloud 專案或機構的管理員需要這項資訊,請參閱下表。

  • roles/serviceusage.serviceUsageAdmin
  • roles/iam.serviceAccountAdmin
  • roles/resourcemanager.projectIamAdmin
  • roles/cloudfunctions.admin
  • roles/run.admin
  • roles/storage.admin
  • roles/pubsublite.admin
  • roles/iam.securityAdmin
  • roles/logging.admin
  • roles/artifactregistry.reader
  • roles/cloudbuild.builds.editor
  • roles/compute.admin
  • roles/iam.serviceAccountUser

刪除部署作業

不再需要解決方案部署作業時,請刪除部署作業,以免系統繼續針對您建立的資源計費。

透過控制台刪除

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

  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-ml-image-annotation-gcf/infra。如果不是,請前往該目錄。

  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. 點選「刪除」。

排解錯誤

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

刪除部署作業時發生錯誤

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

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

    等待系統顯示 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
    

後續步驟