标签是键值对,可用于在 Google Cloud 中对相关或关联资源进行分组。例如,在 Compute Engine 上,您可以使用标签按生产、预演或开发等类别对虚拟机进行分组,以便可以搜索属于每个开发阶段的资源。
为资源添加标签后,您可以利用嵌套过滤功能,对添加标签的资源进行更精确的搜索。
准备工作
- 阅读永久性磁盘文档。
- 阅读映像文档。
- 
  
  如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 
- Set a default region and zone.
 REST如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。 什么是标签?标签是一种键值对,可分配给 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",... } }创建具有标签的资源在创建新资源时,您可以向该资源应用标签。 控制台gcloud如需添加标签,请将 create子命令与--labels标志结合使用。您可以使用以下gcloud命令为 Compute Engine 资源添加标签:- 对于虚拟机实例,请使用 gcloud compute instances create命令。
- 对于快照,请使用 gcloud compute disks snapshot命令。
- 对于映像,请使用 gcloud compute images create命令。
- 对于磁盘,请使用 gcloud compute disks create命令。
 示例 gcloud compute instances create ... \ --labels webserver=backend,media=imagesREST在 API 中,在发出添加新资源的 POST请求期间,在请求正文中添加labels属性以将标签应用于新资源。- 对于虚拟机实例,请使用 instances.insert()方法。
- 对于快照,请使用 disks.createSnapshot()方法。
- 对于映像,请使用 images.insert()方法。
- 对于磁盘,请使用 disks.insert()方法。
 例如,以下代码段会发出 POST请求来创建具有标签webserver:backend和media:images的虚拟机实例: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-labels标志的update子命令。您可以使用以下gcloud命令更新 Compute Engine 资源的标签:- 对于虚拟机实例,请使用 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 会使用新标签值来更新现有键。如果您提供新键,则该工具会将新键添加到标签列表中。 REST要添加或更新标签,请使用最新的指纹和要应用的完整标签列表对资源的 setLabels方法发出POST请求。- 对于虚拟机实例,请使用 instances.setLabels()方法。
- 对于快照,请使用 snapshots.setLabels()方法。
- 对于映像,请使用 images.setLabels()方法。
- 对于磁盘,请使用 disks.setLabels()方法。
- 对于转发规则,请使用 forwardingRules.setLabels()方法。
- 对于区域静态外部 IP 地址,请使用 Beta 版 addresses.setLabels()方法。
- 对于全球静态外部 IP 地址,请使用 Beta 版 globalAddresses.setLabels()方法。
- 对于 VPN 隧道,请使用 Beta 版 vpnTunnels.setLabels()方法。
 与元数据和标记类似,如果资源当前具有您想要保留的标签,则除了您要添加的任何新标签,还必须在请求中包含这些标签。 例如,以下代码段会向虚拟机实例发出 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 资源的标签:- 对于虚拟机实例,请使用 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 ... REST如需检索标签,请向以下资源发出 GET请求:- 对于虚拟机实例,请使用 instances.get()方法。
- 对于快照,请使用 snapshots.get()方法。
- 对于映像,请使用 images.get()方法。
- 对于磁盘,请使用 disks.get()方法。
- 对于转发规则,请使用 forwardingRules.get()方法。
- 对于区域静态外部 IP 地址,请使用 Beta 版 addresses.get()方法。
- 对于全球静态外部 IP 地址,请使用 Beta 版 globalAddresses.get()方法。
- 对于 VPN 隧道,请使用 Beta 版 vpnTunnels.get()方法。
 例如,以下代码段会发出 GET请求来检索虚拟机实例的标签:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME 请替换以下内容: - PROJECT_ID:项目 ID
- ZONE:虚拟机所在的区域
- VM_NAME:虚拟机的名称
 获取 API 请求的标签指纹在 API 中更新或添加标签时,您需要提供请求的最新标签指纹,以防止与其他请求发生冲突。只有 API 请求需要指纹; Google Cloud console 和 Google Cloud CLI 工具不需要指纹。 如需获取最新的 labelsFingerprint,请向以下资源发出GET请求:- 对于虚拟机实例,请使用 instances.get()方法。
- 对于快照,请使用 snapshots.get()方法。
- 对于映像,请使用 images.get()方法。
- 对于磁盘,请使用 disks.get()方法。
- 对于转发规则,请使用 forwardingRules.get()方法。
- 对于区域静态外部 IP 地址,请使用 Beta 版 addresses.get()方法。
- 对于全球静态外部 IP 地址,请使用 Beta 版 globalAddresses.get()方法。
- 对于 VPN 隧道,请使用 Beta 版 vpnTunnels.get()方法。
 例如,以下代码段会获取虚拟机实例的 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如需添加或更改标签,请使用带 --remove-labels标志的update子命令。您可以使用以下gcloud命令移除 Compute Engine 资源的标签:- 对于虚拟机实例,请使用 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,mediaREST如需移除标签,请使用最新指纹和要应用的完整标签列表对以下资源的 setLabels方法发出POST请求:- 对于虚拟机实例,请使用 instances.setLabels()方法。
- 对于快照,请使用 snapshots.setLabels()方法。
- 对于映像,请使用 images.setLabels()方法。
- 对于磁盘,请使用 disks.setLabels()方法。
- 对于转发规则,请使用 forwardingRules.setLabels()方法。
- 对于区域静态外部 IP 地址,请使用 Beta 版 addresses.setLabels()方法。
- 对于全球静态外部 IP 地址,请使用 Beta 版 globalAddresses.setLabels()方法。
- 对于 VPN 隧道,请使用 Beta 版 vpnTunnels.setLabels()方法。
 提供当前的 labelsFingerprint和一个空的标签列表以移除所有标签,或提供您要保留的标签列表(去掉您要移除的标签)。例如,以下代码段会从虚拟机中移除所有标签: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标志结合使用:- 对于虚拟机实例,请使用 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文档。REST如需过滤资源,请向以下资源的 list方法发出GET请求,并添加过滤条件字段:- 对于虚拟机实例,请使用 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,请在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文档。虚拟机标签与标记之间的关系过去,标签和标记是相关的。例如,如果您已向虚拟机添加一个 webserver:test标签,Compute Engine 就会自动向该虚拟机添加一个webserver标记。现在,标签和标记是分开的。如果您在虚拟机上创建标签,Compute Engine 不会为该虚拟机创建标记。如果需要在虚拟机上创建标记,必须手动进行创建。 如需详细了解标记及其用途,请参阅标记概览。 后续步骤- 了解如何比较标记和网络标记。
- 了解如何管理 Compute Engine 资源的标记。
- 查看 filter查询参数,了解过滤。
 如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。 最后更新时间 (UTC):2025-10-29。 -