刪除採用 JavaScript 的動態網頁應用程式

Last reviewed 2023-12-06 UTC

本指南說明如何刪除「採用 JavaScript 的動態網頁應用程式」快速部署解決方案。您可以參考本指南刪除現有的解決方案部署作業。您無法再從 Google Cloud 控制台部署採用 JavaScript 的動態網頁應用程式,且我們也不再支援這類應用程式。

費用

如要預估採用 JavaScript 解決方案的動態網頁應用程式所使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中的預先計算估算值。

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

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

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

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

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

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

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

  • roles/datastore.owner
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/`roles/secretmanager.admin
  • roles/storage.admin
  • roles/compute.networkAdmin
  • roles/compute.admin

刪除部署作業

不再需要解決方案時,請刪除所有資源,以免繼續產生費用。

透過控制台刪除

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

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

排解錯誤

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

刪除部署作業時發生錯誤

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

  • 透過控制台部署解決方案後,如果變更解決方案所佈建的任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。「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/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
    

後續步驟

如要進一步瞭解 Google Cloud 產品和功能,請參閱: