使用標籤整理資源


標籤是鍵/值組合,可用於 Google Cloud ,用來將相關或關聯的資源分組。舉例來說,在 Compute Engine 中,您可以使用標籤將 VM 分組為正式版、準備版或開發版等類別,以便搜尋屬於各開發階段的資源。

為資源加上標籤後,您即可運用巢狀篩選功能,對使用標籤的資源執行更精確的搜尋。

事前準備

  • 參閱永久磁碟說明文件。
  • 參閱映像檔說明文件。
  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

什麼是標籤?

標籤是鍵/值組合,可指派給 Google Cloud 執行個體。這些標籤可協助您整理這些資源,並以所需精細度大規模管理費用。您可以為每項資源加上標籤,並根據標籤篩選資源。標籤的相關資訊會轉送至帳單系統,方便您依據標籤查看帳單費用明細。您可以使用內建的帳單報表,依資源標籤篩選及分組費用。您也可以使用標籤查詢帳單資料匯出內容

標籤需求

套用於資源的標籤必須符合下列需求條件:

  • 每項資源最多可有 64 個標籤。
  • 每個標籤都必須是鍵/值組合。
  • 鍵的長度必須至少為 1 個字元,最多 63 個字元,且不能空白。值可以空白,長度上限為 63 個字元。
  • 鍵和值只能使用小寫字母、數字字元、底線和連字號。所有字元都必須使用 UTF-8 編碼,且可使用國際字元。鍵的開頭必須是小寫字母或國際字元。
  • 標籤中的鍵部分不得重複。但可讓多個資源使用相同的鍵。

這些限制適用於每個標籤的鍵和值,以及具有標籤的個別 Google Cloud 資源。您可以在專案內的所有資源中套用任意數量的標籤。

標籤的常見用法

以下是一些常見的標籤用途:

  • 團隊或成本中心標籤:依據團隊或成本中心來新增標籤,以區別不同團隊 (例如 team:researchteam:analytics) 擁有的執行個體。您可以使用這類型的標籤來進行成本會計或預算編列作業。

  • 元件標籤:例如 component:rediscomponent:frontendcomponent:ingestcomponent:dashboard

  • 環境或階段標籤:例如 environment:productionenvironment:test

  • 狀態標籤:例如 state:activestate:readytodeletestate:archive

  • 擁有權標籤:用於識別負責作業的團隊,例如 team:shopping-cart

  • 虛擬機器標籤:可附加至虛擬機器的標籤。您過去定義的虛擬機器標籤會顯示為沒有值的標籤。

我們不建議您建立大量的不重複標籤,例如為時間戳記或每個 API 呼叫的個別值建立標籤。這種做法的問題是,如果值經常變更,或鍵會使目錄變得雜亂,就很難有效篩選及回報資源。

標籤

標籤可用做為可查詢的資源註解,但無法用於設定政策條件。您可將資源是否具備特定標記設為條件,並按照這項條件允許或拒絕政策。詳情請參閱「標記總覽」。

在 Compute Engine 上使用標籤

您可以將標籤套用至下列 Compute Engine 資源:

  • 虛擬機器 (VM) 執行個體
  • 圖片
  • 永久磁碟
  • 永久磁碟快照

您也可以在相關 Google Cloud 元件上使用標籤,例如:

舉例來說,您可以將下列標籤以鍵/值組合的方式新增至資源:

{
 "labels": {
    "vmrole": "webserver",
    "environment": "production",
    "location": "west",...
    }
 }

建立具有標籤的資源

您可以在建立新資源時將標籤套用到該資源。

主控台

  1. 前往要建立的資源頁面。

  2. 按一下「標籤」下方的「新增標籤」

  3. 繼續建立資源。

gcloud

如要新增標籤,請使用 create 子指令搭配 --labels 旗標。您可以使用下列 gcloud 指令,為 Compute Engine 資源新增標籤:

示例

gcloud compute instances create ... \
    --labels webserver=backend,media=images

API

在 API 中提出新增資源的 POST 要求期間,在要求主體中加入 labels 屬性,以便將標籤套用至新資源。

舉例來說,下列程式碼片段會提出 POST 要求,以便建立標籤為 webserver:backendmedia:images 的 VM 執行個體:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances

{
 "name": "myVM",
 "machineType": "zones/us-central1-f/machineTypes/custom-2-15360-ext",
  ...,
 "labels": {
   "webserver": "backend",
   "media": "images"
  }
}

在現有資源中新增或更新標籤

您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API,新增資源標籤或更新現有標籤。如要新增或更新轉送規則的標籤,請使用 gcloud CLI 或 Compute Engine API。

主控台

  1. 前往要新增標籤的資源頁面。

    • 如為 VM 執行個體,請前往「VM 執行個體
    • 如為快照,請前往「快照」頁面。
    • 如為圖片,請前往「圖片」頁面。
    • 如為磁碟,請前往「磁碟
    • 如要使用靜態外部 IP 位址,請前往「外部 IP 位址」頁面。
    • 如需 VPN 通道,請前往「VPN
  2. 選取您想加上標籤的資源旁邊的核取方塊。

  3. 如要展開標籤欄,請按一下「顯示資訊面板」

  4. 在面板中選取「標籤」

  5. 如要新增標籤,請按一下「Add label」,然後新增鍵/值組合。

  6. 如要更新標籤,請選取現有標籤並修改其值。

  7. 儲存變更。

gcloud

如要新增或變更標籤,請使用 update 子指令搭配 --update-labels 旗標。您可以使用下列 gcloud 指令更新 Compute Engine 資源的標籤:

示例

gcloud compute disks update example-disk \
    --update-labels backend=webserver,media=images

如果您提供的是現有標籤鍵,Google Cloud CLI 會將現有的標籤鍵更新為新的標籤值。如果您提供的是新標籤鍵,這項工具會將其新增至標籤清單。

API

如要新增或更新標籤,請使用最新的指紋和要套用的完整標籤清單,對資源的 setLabels 方法提出 POST 要求:

與中繼資料和標記類似,如果資源含有您要保留的既有標籤,您必須將這些標籤與要加入的新標籤一起納入要求。

舉例來說,下列程式碼片段會向 VM 執行個體提出 POST 要求,以設定標籤 environment:testan-existing-tag:yes

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": {
  "environment": "test",
  "an-existing-tag": "yes"
 },
 "labelFingerprint": "42WmSpB8rSM="
}

查看標籤

您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 查看資源的標籤。如要查看轉送規則的標籤,請使用 gcloud CLI 或 Compute Engine API。

主控台

  1. 前往資源頁面。

    • 如為 VM 執行個體,請前往「VM 執行個體
    • 如為快照,請前往「快照」頁面。
    • 如為圖片,請前往「圖片」頁面。
    • 如為磁碟,請前往「磁碟
    • 如需靜態外部 IP 位址,請參閱「外部 IP 位址」一文。
    • 如需 VPN 通道,請前往「VPN
  2. 按一下資源即可查看詳細資料。

  3. 找出「標籤」

gcloud

如要查看標籤,請使用 describe 子指令。您可以使用下列 gcloud 指令查看 Compute Engine 資源的標籤:

示例

gcloud compute disks describe example-disk

輸出內容包含標籤:

...
id: '5047929990219134234'
kind: compute#disk
labelFingerprint: GHZ1Un209U=0
labels:
  environment: dev
  department: finance
...

API

如要擷取標籤,請向下列資源提出 GET 要求:

舉例來說,下列程式碼片段會提出 GET 要求,擷取 VM 執行個體的標籤:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

更改下列內容:

  • PROJECT_ID:專案 ID
  • ZONE:VM 的可用區
  • VM_NAME:VM 名稱

為 API 要求取得標籤指紋

在 API 更新或新增標籤時,您需要在要求中提供最新標籤指紋,以免與其他要求發生衝突。只有 API 要求需要指紋,Google Cloud 主控台和 Google Cloud CLI 工具則不需要。

如要取得最新的 labelsFingerprint,請向下列資源提出 GET 要求:

舉例來說,以下程式碼片段會取得 VM 執行個體的 labelsFingerprint

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance

回應包含 labelFingerprint 屬性:

200 OK

{
 "kind": "compute#instance",
 "id": "4392196237934605253",
 "creationTimestamp": "2015-09-15T14:05:16.475-07:00",
 "zone": "https://content.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f",
 "status": "RUNNING",
 ...
 "labels": {
  "environment": "test"
 },
 "labelFingerprint": "p1ty_9HoBk0="
}

移除標籤

您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API,從資源中移除標籤。如要移除轉送規則的標籤,請使用 gcloud CLI 或 Compute Engine API。

主控台

  1. 前往要移除標籤的資源頁面。

    • 如為 VM 執行個體,請前往「VM 執行個體
    • 如為快照,請前往「快照」頁面。
    • 如為圖片,請前往「圖片」頁面。
    • 如為磁碟,請前往「磁碟
    • 如要使用靜態外部 IP 位址,請前往「外部 IP 位址」頁面。
    • 如需 VPN 通道,請前往「VPN
  2. 找出您要移除標籤的資源,然後勾選旁邊的核取方塊。

  3. 如要展開標籤欄,請按一下「顯示資訊面板」

  4. 如要刪除標籤,請按一下 「刪除」

  5. 儲存變更。

gcloud

如要新增或變更標籤,請使用 update 子指令搭配 --remove-labels 旗標。您可以使用下列 gcloud 指令移除 Compute Engine 資源的標籤:

示例

gcloud compute disks update example-disk \
    --remove-labels backend,media

API

如要移除標籤,請使用最新的指紋和要套用的完整標籤清單,對下列資源的 setLabels 方法提出 POST 要求:

如要移除所有標籤,請提供目前的 labelsFingerprint 和空白標籤清單。如果只要移除部分標籤,則請提供要保留的標籤清單 (省略要移除的標籤)。例如,下列程式碼片段會從 VM 移除所有標籤:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": { },
 "labelFingerprint": "42WmSpB8rSM="
}

使用標籤篩選搜尋結果

您可以使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API 搜尋資源,並依標籤篩選搜尋結果。如要依標籤篩選轉送規則,請使用 gcloud CLI 或 Compute Engine API。

主控台

  1. 前往要取得篩選後資源清單的資源頁面。

    • 如為 VM 執行個體,請前往「VM 執行個體
    • 如為快照,請前往「快照」頁面。
    • 如為圖片,請前往「圖片」頁面。
    • 如為磁碟,請前往「磁碟
    • 如要使用靜態外部 IP 位址,請前往「外部 IP 位址」頁面。
    • 如需 VPN 通道,請前往「VPN
  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。

  3. 在搜尋列中,輸入您的鍵、值或鍵/值組合。搜尋結果會包含所有部分相符的結果。

    舉例來說,如只要顯示具有 env:dev 標籤的資源,您可以輸入下列任一項目:

    • 輸入金鑰:env
    • 輸入值:dev
    • 輸入鍵/值組合:env:dev

gcloud

如要根據標籤篩選,請使用下列資源的 list 子指令,並加上 --filter 旗標:

--filter 標記的值必須採用 labels.KEY=VALUE 格式。舉例來說,如要篩選含有 env 鍵和 dev 值的標籤,您可以執行以下指令:

gcloud compute instances list \
    --filter labels.env=dev

如需 gcloud CLI 中篩選器語法的詳細資訊,請參閱 gcloud topic filters 說明文件

API

如要篩選資源,請向下列資源的 list 方法提出 GET 要求,並加入篩選器欄位:

舉例來說,如要列出專案 myproject 和區域 us-central1-a 中標籤為 env:dev 鍵/值組合的所有 VM,請在 list 要求中將篩選器欄位設為 labels.env:dev。如果您將篩選器欄位納入為查詢字串參數,請使用經過網址編碼的參數值 filter=labels.env%3Adev

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?filter=labels.env%3Adev

詳情請參閱 Compute Engine API 參考資料中的 filter 說明文件

VM 標籤和網路標記之間的關係

以前標籤和標記是互相關聯的。舉例來說,如果您在 VM 中新增 webserver:test 標籤,Compute Engine 會自動在 VM 中新增 webserver 標記。

現在標籤和標記是各自獨立。如果您在 VM 上建立標籤,Compute Engine 就不會為 VM 建立標記。如需在 VM 上建立標記,您必須手動建立。

如要瞭解如何建立標記,請參閱「網路標記」。

後續步驟