為資源加上標籤

標籤可以將彼此相關或關聯的資源歸類成一組,是相當方便的分類方式。例如常見的做法是將正式階段、準備階段或開發階段的資源分別加上相應標籤,這樣即可在必要時輕鬆搜尋各個開發階段的資源。標籤可能會顯示 production:webserverproduction:databasedev:webserver 等。請將標籤一律新增為鍵/值組合:

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

標籤可以套用至以下任何資源:

  • 虛擬機器執行個體
  • 轉送規則 (Alpha)
  • 映像檔
  • 永久磁碟
  • 永久磁碟快照
  • 靜態外部 IP 位址 (Alpha)
  • VPN 通道 (Alpha)

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

事前準備

限制

  • 您最多可以為每個資源指派 64 個標籤。
  • gcloudGoogle Cloud Platform 主控台尚不支援列為 Alpha 測試版的資源,請改用 Alpha API 為這些資源加上標籤。
  • 標籤的鍵和值必須符合下列限制:

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

建立具有標籤的資源

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

主控台

  1. 前往「Create an Instance」(建立執行個體) 頁面。

    前往「Create an Instance」(建立執行個體) 頁面

  2. 展開 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用) 部分。
  3. 在「Management」(管理) 下方,指定您要為這個資源新增的 [Labels] (標籤)
  4. 繼續建立資源。

gcloud

建立資源時,請依序加入 --labels 標記和逗號分隔的標籤鍵/值組合清單。例如:

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

建立映像檔和磁碟時也請套用同樣的標記。

API

在 API 中提出新增資源的 POST 要求期間,請在要求內容中加入 labels 屬性以便將標籤套用至新資源。例如建立 VM 執行個體的要求內容會具有以下標籤:

body = {
  "name": "[INSTANCE_NAME]",
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
   ...,
  "labels": [{
    "key": "webserver",
    "value": "backend"
    },
    {
    "key": "media",
    "value": "images"
   }]
 }

建立映像檔和磁碟時也可套用同樣的屬性。

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

您可以在資源中新增標籤或更新現有標籤。

主控台

  1. 前往要新增標籤的資源頁面。
  2. 找出您要加上標籤的資源,然後選取旁邊的核取方塊。
  3. 按一下 [Show info panel] (顯示資訊面板) 來展開標籤欄。
  4. 視需求更新或新增標籤。
  5. 儲存變更。

gcloud

請透過 gcloud 指令列工具使用 update 子指令和 --update-labels 標記新增或變更標籤。舉例來說,如要將標籤新增到磁碟,請使用 gcloud compute disks update [DISK] --update-labels 子指令:

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

如果您提供的是現有標籤鍵,指令列工具會將現有標籤更新為新標籤值。如果您提供的是新標籤鍵,則指令列工具會將其新增到標籤清單。

如果是為執行個體、快照和映像檔加上標籤,則請使用 gcloud compute instancesgcloud compute snapshotsgcloud compute images 指令。

API

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

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

以下的程式碼片段會示範如何向執行個體的 setLabels 方法提出要求。您可以照這個做法另外對磁碟快照映像檔setLabels 方法提出要求:

Request

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

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

同樣地,您可以在建立資源時指定 labels 物件,來為資源加上標籤。

取得 API 要求的標籤指紋

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

您只要對相應的資源執行 GET 要求即可取得 API 要求所需的最新標籤指紋。以下的程式碼片段會示範如何取得執行個體的 labelsFingerprint,您可以對磁碟快照映像檔提出類似的要求。

尋找 labelFingerprint 屬性:

Request

GET https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance
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": {
  "env": "test"
 },
 "labelFingerprint": "p1ty_9HoBk0="
}

移除標籤

主控台

  1. 前往要新增標籤的資源頁面。
  2. 找出您要移除標籤的資源,然後勾選旁邊的核取方塊。
  3. 按一下 [Show info panel] (顯示資訊面板) 來展開標籤欄。
  4. 在要移除的標籤旁邊按一下 X
  5. 儲存變更。

gcloud

透過 gcloud 指令列工具,使用 update 標記執行 --remove-labels 指令,並提供要移除的標籤鍵。例如:

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

如果是快照和映像檔,請使用 gcloud compute snapshotsgcloud compute images 集合。

API

在 API 中,對適當 API 資源的 setLabels 方法提出 POST 要求:執行個體磁碟快照

如要移除所有標籤,請提供目前的 labelsFingerprint 和空白標籤清單。如果只要移除部分標籤,則請提供要保留的標籤清單 (省略要移除的標籤)。例如:

Request

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

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

使用標籤篩選搜尋內容

搜尋資源時,您可以使用標籤篩選搜尋結果。

主控台

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

gcloud

請在 gcloud 中提出 list 要求並使用 --filter 標記。如要篩選標籤,請使用 labels.key=[VALUE] 語法。舉例來說,如要篩選具有 env 鍵和 dev 值的標籤,可以執行以下指令:

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

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

API

在 API 中,可使用 URL 編碼的 filter 查詢參數提出 list 要求:舉例來說,如要根據 env 鍵等於 dev 值的標籤進行篩選,可提出以下 GET 要求:

GET https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/list?filter=labels.env+eq+dev

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

執行個體標籤和網路標記的關係

以前標籤和標記是互相關聯的。舉例來說,將 webserver:test 標籤加入 VM 執行個體時,Compute Engine 會自動在執行個體中新增 webserver 標記。

現在標籤和標記是各自獨立。如果您在執行個體中建立了標籤,Compute Engine 不會針對該執行個體建立標記。如需加入標記,您必須手動建立。

如要瞭解如何建立標記,請詳閱網路標記頁面

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件