標籤是鍵/值組合,可用於 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
-
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.
- 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:research
和team:analytics
) 擁有的執行個體。您可以使用這類型的標籤來進行成本會計或預算編列作業。元件標籤:例如
component:redis
、component:frontend
、component:ingest
和component:dashboard
。環境或階段標籤:例如
environment:production
和environment:test
。狀態標籤:例如
state:active
、state:readytodelete
和state:archive
。擁有權標籤:用於識別負責作業的團隊,例如
team:shopping-cart
。
- 虛擬機器標籤:可附加至虛擬機器的標籤。您過去定義的虛擬機器標籤會顯示為沒有值的標籤。
我們不建議您建立大量的不重複標籤,例如為時間戳記或每個 API 呼叫的個別值建立標籤。這種做法的問題是,如果值經常變更,或鍵會使目錄變得雜亂,就很難有效篩選及回報資源。
標籤
標籤可用做為可查詢的資源註解,但無法用於設定政策條件。您可將資源是否具備特定標記設為條件,並按照這項條件允許或拒絕政策。詳情請參閱「標記總覽」。
在 Compute Engine 上使用標籤
您可以將標籤套用至下列 Compute Engine 資源:
- 虛擬機器 (VM) 執行個體
- 圖片
- 永久磁碟
- 永久磁碟快照
您也可以在相關 Google Cloud 元件上使用標籤,例如:
- Cloud Storage 值區
- 網路資源:
舉例來說,您可以將下列標籤以鍵/值組合的方式新增至資源:
{ "labels": { "vmrole": "webserver", "environment": "production", "location": "west",... } }
建立具有標籤的資源
您可以在建立新資源時將標籤套用到該資源。
主控台
前往要建立的資源頁面。
- 如為 VM 執行個體,請前往「Create an instance」(建立執行個體)。
- 如為磁碟,請參閱「建立磁碟」一文。
- 如為快照,請參閱「建立快照」一文。
- 如為圖片,請參閱「建立圖片」一文。
按一下「標籤」下方的「新增標籤」
。繼續建立資源。
gcloud
如要新增標籤,請使用 create
子指令搭配 --labels
旗標。您可以使用下列 gcloud
指令,為 Compute Engine 資源新增標籤:
- 針對 VM 執行個體,請使用
gcloud compute instances create
指令。 - 如要查看快照,請使用
gcloud compute disks snapshot
指令。 - 如要處理圖片,請使用
gcloud compute images create
指令。 - 如需磁碟資訊,請使用
gcloud compute disks create
指令。
示例
gcloud compute instances create ... \ --labels webserver=backend,media=images
API
在 API 中提出新增資源的 POST
要求期間,在要求主體中加入 labels
屬性,以便將標籤套用至新資源。
- 如為 VM 執行個體,請使用
instances.insert()
方法。 - 如果是快照,請使用
disks.createSnapshot()
方法。 - 如為圖片,請使用
images.insert()
方法。 - 如為磁碟,請使用
disks.insert()
方法。
舉例來說,下列程式碼片段會提出 POST
要求,以便建立標籤為 webserver:backend
和 media: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。
主控台
gcloud
如要新增或變更標籤,請使用 update
子指令搭配 --update-labels
旗標。您可以使用下列 gcloud
指令更新 Compute Engine 資源的標籤:
- 針對 VM 執行個體,請使用
gcloud compute instances update
指令。 - 如要為快照加上標記,請使用
gcloud compute snapshots update
指令。 - 如要處理圖片,請使用
gcloud compute images update
指令。 - 如需磁碟資訊,請使用
gcloud compute disks update
指令。 - 如要使用轉送規則,請使用
gcloud compute forwarding-rules update
指令。 - 如要使用靜態外部 IP 位址,請使用
gcloud beta compute addresses update
指令。 - 針對 VPN 通道,請使用
gcloud beta compute vpn-tunnels update
指令。
示例
gcloud compute disks update example-disk \ --update-labels backend=webserver,media=images
如果您提供的是現有標籤鍵,Google Cloud CLI 會將現有的標籤鍵更新為新的標籤值。如果您提供的是新標籤鍵,這項工具會將其新增至標籤清單。
API
如要新增或更新標籤,請使用最新的指紋和要套用的完整標籤清單,對資源的 setLabels
方法提出 POST
要求:
- 如為 VM 執行個體,請使用
instances.setLabels()
方法。 - 如果是快照,請使用
snapshots.setLabels()
方法。 - 如為圖片,請使用
images.setLabels()
方法。 - 如為磁碟,請使用
disks.setLabels()
方法。 - 如要使用轉送規則,請使用
forwardingRules.setLabels()
方法。 - 如需地區性靜態外部 IP 位址,請使用 Beta 版
addresses.setLabels()
方法。 - 如要使用全球靜態外部 IP 位址,請使用 Beta 版
globalAddresses.setLabels()
方法。 - 如要使用 VPN 通道,請使用 Beta 版
vpnTunnels.setLabels()
方法。
與中繼資料和標記類似,如果資源含有您要保留的既有標籤,您必須將這些標籤與要加入的新標籤一起納入要求。
舉例來說,下列程式碼片段會向 VM 執行個體提出 POST
要求,以設定標籤 environment:test
和 an-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。
主控台
gcloud
如要查看標籤,請使用 describe
子指令。您可以使用下列 gcloud
指令查看 Compute Engine 資源的標籤:
- 針對 VM 執行個體,請使用
gcloud compute instances describe
指令。 - 如要為快照加上標記,請使用
gcloud compute snapshots describe
指令。 - 如要處理圖片,請使用
gcloud compute images describe
指令。 - 如需磁碟資訊,請使用
gcloud compute disks describe
指令。 - 如要使用轉送規則,請使用
gcloud compute forwarding-rules describe
指令。 - 如要使用靜態外部 IP 位址,請使用
gcloud beta compute addresses describe
指令。 - 針對 VPN 通道,請使用
gcloud beta compute vpn-gateways describe
指令。
示例
gcloud compute disks describe example-disk
輸出內容包含標籤:
... id: '5047929990219134234' kind: compute#disk labelFingerprint: GHZ1Un209U=0 labels: environment: dev department: finance ...
API
如要擷取標籤,請向下列資源提出 GET
要求:
- 如為 VM 執行個體,請使用
instances.get()
方法。 - 如果是快照,請使用
snapshots.get()
方法。 - 如要處理圖片,請使用
images.get()
方法。 - 如為磁碟,請使用
disks.get()
方法。 - 如要使用轉送規則,請使用
forwardingRules.get()
方法。 - 如需地區性靜態外部 IP 位址,請使用Beta 版
addresses.get()
方法。 - 如要使用全球靜態外部 IP 位址,請使用Beta 版
globalAddresses.get()
方法。 - 如要使用 VPN 通道,請使用 Beta 版
vpnTunnels.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 執行個體,請使用
instances.get()
方法。 - 如果是快照,請使用
snapshots.get()
方法。 - 如要處理圖片,請使用
images.get()
方法。 - 如為磁碟,請使用
disks.get()
方法。 - 如要使用轉送規則,請使用
forwardingRules.get()
方法。 - 如需地區性靜態外部 IP 位址,請使用Beta 版
addresses.get()
方法。 - 如要使用全球靜態外部 IP 位址,請使用Beta 版
globalAddresses.get()
方法。 - 如要使用 VPN 通道,請使用 Beta 版
vpnTunnels.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。
主控台
gcloud
如要新增或變更標籤,請使用 update
子指令搭配 --remove-labels
旗標。您可以使用下列 gcloud
指令移除 Compute Engine 資源的標籤:
- 針對 VM 執行個體,請使用
gcloud compute instances update
指令。 - 如要為快照加上標記,請使用
gcloud compute snapshots update
指令。 - 如要處理圖片,請使用
gcloud compute images update
指令。 - 如需磁碟資訊,請使用
gcloud compute disks update
指令。 - 如要使用轉送規則,請使用
gcloud compute forwarding-rules update
指令。 - 如要使用靜態外部 IP 位址,請使用
gcloud beta compute addresses update
指令。 - 針對 VPN 通道,請使用
gcloud beta compute vpn-tunnels update
指令。
示例
gcloud compute disks update example-disk \ --remove-labels backend,media
API
如要移除標籤,請使用最新的指紋和要套用的完整標籤清單,對下列資源的 setLabels
方法提出 POST
要求:
- 如為 VM 執行個體,請使用
instances.setLabels()
方法。 - 如果是快照,請使用
snapshots.setLabels()
方法。 - 如要處理圖片,請使用
images.setLabels()
方法。 - 如為磁碟,請使用
disks.setLabels()
方法。 - 如要使用轉送規則,請使用
forwardingRules.setLabels()
方法。 - 如需地區性靜態外部 IP 位址,請使用Beta 版
addresses.setLabels()
方法。 - 如要使用全球靜態外部 IP 位址,請使用Beta 版
globalAddresses.setLabels()
方法。 - 如要使用 VPN 通道,請使用 Beta 版
vpnTunnels.setLabels()
方法。
如要移除所有標籤,請提供目前的 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。
主控台
gcloud
如要根據標籤篩選,請使用下列資源的 list
子指令,並加上 --filter
旗標:
- 針對 VM 執行個體,請使用
gcloud compute instances list
指令。 - 如要為快照加上標記,請使用
gcloud compute snapshots list
指令。 - 如要處理圖片,請使用
gcloud compute images list
指令。 - 如需磁碟資訊,請使用
gcloud compute disks list
指令。 - 如要使用轉送規則,請使用
gcloud compute forwarding-rules list
指令。 - 如要使用靜態外部 IP 位址,請使用
gcloud beta compute addresses list
指令。 - 針對 VPN 通道,請使用
gcloud beta compute vpn-tunnels list
指令。
--filter
標記的值必須採用 labels.KEY=VALUE
格式。舉例來說,如要篩選含有 env
鍵和 dev
值的標籤,您可以執行以下指令:
gcloud compute instances list \ --filter labels.env=dev
如需 gcloud CLI 中篩選器語法的詳細資訊,請參閱 gcloud topic filters
說明文件。
API
如要篩選資源,請向下列資源的 list
方法提出 GET
要求,並加入篩選器欄位:
- 如為 VM 執行個體,請使用
instances.list()
方法。 - 如果是快照,請使用
snapshots.list()
方法。 - 如為圖片,請使用
images.list()
方法。 - 如為磁碟,請使用
disks.list()
方法。 - 如要使用轉送規則,請使用
forwardingRules.list()
方法。 - 如需地區性靜態外部 IP 位址,請使用Beta 版
addresses.list()
方法。 - 如要使用全球靜態外部 IP 位址,請使用Beta 版
globalAddresses.list()
方法。 - 如要使用 VPN 通道,請使用 Beta 版
vpnTunnels.list()
方法。
舉例來說,如要列出專案 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 上建立標記,您必須手動建立。
如要瞭解如何建立標記,請參閱「網路標記」。