為項目加上標籤

本頁面將說明標籤。本文將說明如何建立含有標籤的執行個體、如何新增、更新及移除標籤,以及如何在搜尋中使用標籤。

標籤是將彼此相關或關聯的執行個體分組在一起的一種簡便方式。例如,您可以根據使用執行個體作為測試還是實際工作環境來為執行個體加上標籤,也可以將自己的帳單代碼新增至執行個體。您可以使用標籤來搜尋執行個體,或追蹤執行個體費用。

請將標籤一律新增為鍵/值組合:

{
 "userLabels": {
    "track": "production",
    "location": "western-division"
    "billing-code": "34802",...
 }

修改標籤不會影響 Cloud SQL 執行個體的效能。

詳情請參閱「什麼是標籤?」和「標籤相關規定」。

限制

  • 您最多可以向每個執行個體指派 64 個標籤。
  • 標籤的鍵值必須符合下列限制:

    • 每個鍵和值的長度不得超過 63 個字元。
    • 鍵和值只能包含小寫英文字母、數字字元、底線和破折號。允許使用國際字元。
    • 標籤鍵的開頭必須是小寫英文字母。
    • 標籤鍵不得留空。

建立具有標籤的執行個體

使用 gcloud CLI 或 API 建立新的執行個體時,您可以為執行個體套用標籤。

gcloud

建立執行個體時,請包含 `--labels` 標記並加上以逗號分隔的標籤鍵/值組合清單。您必須使用 Beta 版的 create 指令包含標籤。

例如:

gcloud beta sql instances create ... --labels track=production,billing-code=34802

Terraform

建立具有標籤的執行個體時,請使用 Terraform 資源

resource "google_sql_database_instance" "postgres_instance_labels" {
  name             = "postgres-instance-labels"
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    user_labels = {
      track        = "production"
      billing-code = 34802
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含 .tf 副檔名,例如 main.tf。在本教學課程中,檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。

    將範例程式碼複製到新建立的 main.tf 中。

    您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 查看並修改要套用至環境的範例參數。
  4. 儲存變更。
  5. 初始化 Terraform。這項操作只需對每個目錄執行一次。
    terraform init

    如要使用最新版的 Google 供應器,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,並確認 Terraform 要建立或更新的資源是否符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,即可套用更新的 Terraform 設定:
    terraform apply
  1. 如要移除先前透過 Terraform 設定套用的資源,請執行下列指令,並在提示中輸入 yes

    terraform destroy

curl

在 API 中提出新增執行個體的 `POST` 要求期間,請在要求主體中加入 `userLabels` 屬性,以便將標籤套用至新執行個體。舉例來說,建立執行個體的要求主體會包含下列標籤:

          "settings": {"tier":"db-custom-2-7680",
                       "userLabels": {"track": "production",
                                      "location": "western-division",
                                      "billing-code": "34802"},
          

在現有執行個體上新增或更新標籤

主控台

  1. 前往 Google Cloud 主控台的「Cloud SQL 執行個體」頁面。

    前往「Cloud SQL 執行個體」頁面

  2. 選取您想加上標籤的資源旁邊的核取方塊。

  3. 按一下右上角的 [Show Info Panel] (顯示資訊面板),展開標籤欄。

  4. 視需求更新或新增標籤。

  5. 儲存變更。

gcloud

使用 Beta 版的 patch 子指令,在現有執行個體中更新或新增標籤:

gcloud beta sql instances patch [INSTANCE_NAME] --update-labels [KEY1]=[VALUE1]...

例如:

gcloud beta sql instances patch my-instance --update-labels track=production,billing-code=34802

如果您提供的是現有標籤鍵,這項工具會將現有的標籤鍵更新為新的標籤值。如果您提供新的標籤鍵,這項工具會將其新增至標籤清單。只有您指定的標籤會受到影響;未包含在指令中的現有標籤會維持不變。

rest v1

如要新增或更新標籤,請使用 PATCH 方法:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID
  • label-name-1:標籤名稱
  • value-1:label-name-1 的值
  • label-name-2:標籤名稱
  • value-2:label-name-2 的值

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings" :
    {
        "userLabels" :
         {
            "label-name-1" : "value-1",
            "label-name-2" : "value-2"
         }
    }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

如果您提供的是現有標籤鍵,這項工具會將現有的標籤鍵更新為新的標籤值。如果您提供新的標籤鍵,這項工具會將其新增至標籤清單。只有您指定的標籤會受到影響;未包含在要求中的現有標籤會維持不變。

rest v1beta4

如要新增或更新標籤,請使用 PATCH 方法:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID
  • label-name-1:標籤名稱
  • value-1:label-name-1 的值
  • label-name-2:標籤名稱
  • value-2:label-name-2 的值

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings" :
    {
        "userLabels" :
         {
            "label-name-1" : "value-1",
            "label-name-2" : "value-2"
         }
    }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

如果您提供的是現有標籤鍵,這項工具會將現有的標籤鍵更新為新的標籤值。如果您提供新的標籤鍵,這項工具會將其新增至標籤清單。只有您指定的標籤會受到影響;未包含在要求中的現有標籤會維持不變。

移除標籤

主控台

  1. 前往 Google Cloud 主控台的「Cloud SQL 執行個體」頁面。

    前往「Cloud SQL 執行個體」頁面

  2. 找出您要移除標籤的資源,然後勾選旁邊的核取方塊。

  3. 按一下 [Show info panel] (顯示資訊面板) 來展開標籤欄。

  4. 找出您要移除的所有標籤,然後按一下旁邊的 [X]。

  5. 儲存變更。

gcloud

使用 gcloud CLI,執行具有 --remove-labels 標記的 patch 子指令 (Beta 版):

gcloud beta sql instances patch [INSTANCE_NAME] --remove-labels [LABEL1],[LABEL2]

如果您提供的標籤名稱不存在,系統不會傳回錯誤。

rest v1

您可以使用 API 移除標籤,方法是將標籤值設為 null

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID
  • label-name:標籤名稱

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings" :
    {
        "userLabels" :
         {
            "label-name" : null,
         }
    }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

rest v1beta4

您可以使用 API 移除標籤,方法是將標籤值設為 null

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID
  • label-name:標籤名稱

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings" :
    {
        "userLabels" :
         {
            "label-name" : null,
         }
    }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "[email protected]",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

使用標籤篩選執行個體搜尋結果

您可以使用 gcloud CLI 或 API,按標籤篩選執行個體清單結果。

gcloud

gcloud 中,提出 list 要求並使用 --filter 旗標。如要篩選標籤,請使用 labels.[KEY]:[VALUE] 語法。舉例來說,如要篩選具有值 34802 的標籤 billing-code,您可以執行下列指令:

gcloud beta sql instances list --filter='labels.billing-code:34802'

如果您要分辨標籤是否存在 (不論其值為何),可以執行下列指令進行篩選:

gcloud beta sql instances list --filter='labels:billing-code'

如需 gcloud CLI 中篩選器語法的完整說明,請參閱 gcloud topic filters 說明文件

curl

在 API 中,您可以使用網址編碼的 filter 查詢參數發出 list 要求:

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.[KEY1_NAME]:[KEY1_VALUE]%20userLabels.[KEY2_NAME]:[KEY2_VALUE]

例如:

curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.track:production%20userLabels.billing-code:34802

當包含的兩個標籤值之間具有 (編碼) 空格時,這兩個值必須同時為 True 才能傳回執行個體 (AND 作業)。您也可以明確提供 ANDORNOT 運算子。例如:

curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     -X GET \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.track:production%20OR%20userLabels.billing-code:34802

後續步驟