使用標籤整理資源


標籤是鍵/值組合,可用於 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.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

什麼是標籤?

標籤是可指派給 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 元件上使用標籤,例如:

  • Cloud Storage bucket
  • 網路資源:
    • 搭配內部應用程式負載平衡器使用的轉送規則 (不支援其他負載平衡器轉送規則)
    • VPN 通道 (預覽版)
    • 靜態外部 IP 位址 (預覽版)

舉例來說,您可以為資源新增下列鍵/值組合標籤:

{
 "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

REST

在 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 instances」(VM 執行個體)。
    • 如為快照,請前往「快照」。
    • 如為映像檔,請前往「Images」。
    • 如為磁碟,請前往「Disks」(磁碟)
    • 如為靜態外部 IP 位址,請前往「外部 IP 位址」。
    • 如要查看 VPN 通道,請前往「VPN」
  2. 選取您想加上標籤的資源旁邊的核取方塊。

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

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

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

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

  7. 儲存變更。

gcloud

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

示例

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

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

REST

如要新增或更新標籤,請使用最新的指紋和要套用的完整標籤清單,對資源的 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 instances」(VM 執行個體)。
    • 如為快照,請前往「快照」。
    • 如為映像檔,請前往「Images」。
    • 如為磁碟,請前往「Disks」(磁碟)
    • 如為靜態外部 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
...

REST

如要擷取標籤,請對下列資源發出 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 console 和 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 instances」(VM 執行個體)。
    • 如為快照,請前往「快照」。
    • 如為映像檔,請前往「Images」。
    • 如為磁碟,請前往「Disks」(磁碟)
    • 如為靜態外部 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

REST

如要移除標籤,請使用最新的指紋和要套用的完整標籤清單,對下列資源的 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 instances」(VM 執行個體)。
    • 如為快照,請前往「快照」。
    • 如為映像檔,請前往「Images」。
    • 如為磁碟,請前往「Disks」(磁碟)
    • 如為靜態外部 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 說明文件

REST

如要篩選資源,請向下列資源的 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 標籤和標記的關係

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

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

如要進一步瞭解標記及其用途,請參閱標記總覽

後續步驟