标签是键值对,可用于在 Google Cloud 中对相关或关联资源进行分组。例如,在 Compute Engine 上,您可以使用标签按生产、预演或开发等类别对虚拟机进行分组,以便可以搜索属于每个开发阶段的资源。
为资源添加标签后,您可以利用嵌套过滤功能,对添加标签的资源进行更精确的搜索。
准备工作
- 阅读永久性磁盘文档。
- 阅读映像文档。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 每个资源最多可以有 64 个标签。
- 每个标签都必须采用键值对形式。
- 键至少包含 1 个字符,最多包含 63 个字符,且不能为空。值可以为空,且最多包含 63 个字符。
- 键和值只能包含小写字母、数字字符、下划线和短划线。所有字符必须使用 UTF-8 编码,允许使用国际字符。 键必须以小写字母或国际字符开头。
- 标签的键部分在单个资源内必须是唯一的。不过,您可以将同一个键用于多个资源。
团队或成本中心标签:根据团队或成本中心添加标签,以区分不同团队所拥有的实例(例如
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
。- 虚拟机标签:标签可附加到虚拟机。您在过去定义的虚拟机标记显示为没有值的标签。
- 虚拟机 (VM) 实例
- 图片
- 永久性磁盘
- 永久性磁盘快照
- Cloud Storage 存储桶
- 网络资源:
- 对于虚拟机实例,请使用
gcloud compute instances create
命令。 - 对于快照,请使用
gcloud compute disks snapshot
命令。 - 对于映像,请使用
gcloud compute images create
命令。 - 对于磁盘,请使用
gcloud compute disks create
命令。 - 对于虚拟机实例,请使用
instances.insert()
方法。 - 对于快照,请使用
disks.createSnapshot()
方法。 - 对于映像,请使用
images.insert()
方法。 - 对于磁盘,请使用
disks.insert()
方法。 - 对于虚拟机实例,请使用
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
命令。 - 对于虚拟机实例,请使用
instances.setLabels()
方法。 - 对于快照,请使用
snapshots.setLabels()
方法。 - 对于映像,请使用
images.setLabels()
方法。 - 对于磁盘,请使用
disks.setLabels()
方法。 - 对于转发规则,请使用
forwardingRules.setLabels()
方法。 - 对于区域静态外部 IP 地址,请使用 Beta 版
addresses.setLabels()
方法。 - 对于全球静态外部 IP 地址,请使用 Beta 版
globalAddresses.setLabels()
方法。 - 对于 VPN 隧道,请使用 Beta 版
vpnTunnels.setLabels()
方法。 - 对于虚拟机实例,请使用
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
命令。 - 对于虚拟机实例,请使用
instances.get()
方法。 - 对于快照,请使用
snapshots.get()
方法。 - 对于映像,请使用
images.get()
方法。 - 对于磁盘,请使用
disks.get()
方法。 - 对于转发规则,请使用
forwardingRules.get()
方法。 - 对于区域静态外部 IP 地址,请使用 Beta 版
addresses.get()
方法。 - 对于全球静态外部 IP 地址,请使用 Beta 版
globalAddresses.get()
方法。 - 对于 VPN 隧道,请使用 Beta 版
vpnTunnels.get()
方法。 - PROJECT_ID:项目 ID
- ZONE:虚拟机所在的区域
- VM_NAME:虚拟机的名称
- 对于虚拟机实例,请使用
instances.get()
方法。 - 对于快照,请使用
snapshots.get()
方法。 - 对于映像,请使用
images.get()
方法。 - 对于磁盘,请使用
disks.get()
方法。 - 对于转发规则,请使用
forwardingRules.get()
方法。 - 对于区域静态外部 IP 地址,请使用 Beta 版
addresses.get()
方法。 - 对于全球静态外部 IP 地址,请使用 Beta 版
globalAddresses.get()
方法。 - 对于 VPN 隧道,请使用 Beta 版
vpnTunnels.get()
方法。 - 对于虚拟机实例,请使用
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
命令。 - 对于虚拟机实例,请使用
instances.setLabels()
方法。 - 对于快照,请使用
snapshots.setLabels()
方法。 - 对于映像,请使用
images.setLabels()
方法。 - 对于磁盘,请使用
disks.setLabels()
方法。 - 对于转发规则,请使用
forwardingRules.setLabels()
方法。 - 对于区域静态外部 IP 地址,请使用 Beta 版
addresses.setLabels()
方法。 - 对于全球静态外部 IP 地址,请使用 Beta 版
globalAddresses.setLabels()
方法。 - 对于 VPN 隧道,请使用 Beta 版
vpnTunnels.setLabels()
方法。 - 对于虚拟机实例,请使用
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
命令。 - 对于虚拟机实例,请使用
instances.list()
方法。 - 对于快照,请使用
snapshots.list()
方法。 - 对于映像,请使用
images.list()
方法。 - 对于磁盘,请使用
disks.list()
方法。 - 对于转发规则,请使用
forwardingRules.list()
方法。 - 对于区域静态外部 IP 地址,请使用 Beta 版
addresses.list()
方法。 - 对于全球静态外部 IP 地址,请使用 Beta 版
globalAddresses.list()
方法。 - 对于 VPN 隧道,请使用 Beta 版
vpnTunnels.list()
方法。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
什么是标签?
标签是一种键值对,可分配给 Google Cloud 实例。它们可以帮助您按照所需的粒度大规模组织这些资源并管理费用。您可以将标签附加到各项资源,然后根据其标签对资源进行过滤。标签的相关信息会转发到结算系统,以便您按标签细分结算费用。使用内置的结算报告,您可以按资源标签对费用进行过滤和分组。您还可以使用标签查询结算数据导出。
标签要求
应用于资源的标签必须符合以下要求:
这些限制适用于每个标签的键和值,以及带有标签的各个 Google Cloud 资源。您可以对一个项目的所有资源应用任意数量的标签。
标签的常见用途
以下是标签的一些常见使用场景:
我们不建议创建大量唯一标签,例如为每个 API 调用的时间戳或个别值创建标签。这种方法的问题在于,当值经常变化或键导致目录杂乱时,很难有效地过滤和报告资源。
标签和标记
标签可用作资源可查询的注释,但不能用于设置政策的条件。通过对政策进行精细控制,标记提供了一种有条件地允许或拒绝政策的方法,具体取决于资源是否具有特定的标记。如需了解详情,请参阅标记概览。
在 Compute Engine 上使用标签
您可以将标签应用于以下 Compute Engine 资源:
您还可以在如下所示的相关 Google Cloud 组件上使用标签:
例如,您可以将以下标签作为键值对添加到资源中:
{ "labels": { "vmrole": "webserver", "environment": "production", "location": "west",... } }
创建具有标签的资源
在创建新资源时,您可以向该资源应用标签。
控制台
gcloud
如需添加标签,请将
create
子命令与--labels
标志结合使用。您可以使用以下gcloud
命令为 Compute Engine 资源添加标签:示例
gcloud compute instances create ... \ --labels webserver=backend,media=images
API
在 API 中,在发出添加新资源的
POST
请求期间,在请求正文中添加labels
属性以将标签应用于新资源。例如,以下代码段会发出
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 disks update example-disk \ --update-labels backend=webserver,media=images
如果您提供的标签键已经存在,Google Cloud CLI 会使用新标签值来更新现有键。如果您提供新键,则该工具会将新键添加到标签列表中。
API
要添加或更新标签,请使用最新的指纹和要应用的完整标签列表对资源的
setLabels
方法发出POST
请求。与元数据和标记类似,如果资源当前具有您想要保留的标签,则除了您要添加的任何新标签,还必须在请求中包含这些标签。
例如,以下代码段会向虚拟机实例发出
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 disks describe example-disk
输出包含标签:
... id: '5047929990219134234' kind: compute#disk labelFingerprint: GHZ1Un209U=0 labels: environment: dev department: finance ...
API
如需检索标签,请向以下资源发出
GET
请求:例如,以下代码段会发出
GET
请求来检索虚拟机实例的标签:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
请替换以下内容:
获取 API 请求的标签指纹
在 API 中更新或添加标签时,您需要提供请求的最新标签指纹,以防止与其他请求发生冲突。只有 API 请求需要指纹;Google Cloud 控制台和 Google Cloud CLI 工具不需要指纹。
如需获取最新的
labelsFingerprint
,请向以下资源发出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 disks update example-disk \ --remove-labels backend,media
API
如需移除标签,请使用最新指纹和要应用的完整标签列表对以下资源的
setLabels
方法发出POST
请求:提供当前的
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
标志结合使用:--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
,请在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 不会为该虚拟机创建标记。如果需要在虚拟机上创建标记,必须手动进行创建。
如需了解如何创建标记,请参阅网络标记。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-