首页 > 解决方案 > 计算实例的 GCP gcloud API 过滤标签

问题描述

我正在尝试查找特定项目中具有特定标签的所有虚拟机。这有效

gcloud compute instances list --project myproject --filter="(name=myvm) AND --filter="tags.items~*ngf*"

但是取出VM名称不起作用

gcloud compute instances list --project myproject --filter="tags.items~*ngf*"

错误信息是

ERROR: (gcloud.compute.instances.list) Filter expression RE pattern [*ngf*]: nothing to repeat at position 0

有任何想法吗?我尝试在过滤器中使用标签而不是 tags.items 但这似乎也不起作用。

标签: google-cloud-platform

解决方案


您遇到的问题是由于您使用的正则表达式。

*使生成的 RE 匹配前一个 RE 的 0 个或多个重复,尽可能多的重复。ab* 将匹配 'a'、'ab' 或 'a' 后跟任意数量的 'b'。

您可以查看以下链接以获取有关正则表达式的更多信息。

关于您的要求:

我正在尝试查找特定项目中具有特定标签的所有虚拟机。

请尝试使用以下命令:

gcloud compute instances list --filter="(tags.items ~ <<YOUR-NETWORK-TAG>>*)" --project <<MY-PROJECT>>

或者

gcloud compute instances list --filter="(tags.items=<<YOUR-NETWORK-TAG>>)" --project <<MY-PROJECT>>

现在对于标签,您可以使用以下内容:

gcloud compute instances list --filter="(tags.items=<<YOUR-NETWORK-TAG>>) AND (labels.<<MY-LABEL>>:*)" --project <<MY-PROJECT>>

您可以查看此链接以查找更多示例:gcloud topic filters


推荐阅读