AWS CLI 提供了一種通過 tag-key 和 tag-value 過濾的方法,方法如下:
aws ec2 describe-instances --filters Name=tag-key,Values=my_tag
aws ec2 describe-instances --filters Name=tag-value,Values=my_tag_value
aws ec2 describe-instances --filters Name=tag:my_tag,Values=my_tag_value
但是當標簽包含多個值時,例如my_tag : my_value1 , my_value2 , my_value3它不起作用。當使用前面的任何命令時,它只回傳那些包含具有該值的標記的實體。標記包含值以及其他值的所有其他情況都將被忽略。
如何實作過濾像'標簽包含這個值'而不是'標簽正是這個值'?
PC 我將在使用 aws-sdk 的 java 應用程式中使用這種方法,所以我對 aws-sdk api 解決方案感興趣;我絕對不想在我的服務器端過濾一組實體。
uj5u.com熱心網友回復:
您可以根據通配符(* 或 ? 分別用于多字符或單字符匹配)或將它們列為逗號分隔值來過濾標簽值。因此,如果我有三個帶有標簽“t1”的實體和多個實體中不同的可能值,我可以使用以下命令將它們全部選中:
aws ec2 describe-instances --filters Name=tag:t1,Values=*
您還可以使用通配符或逗號分隔串列來選擇子集。下面是一些示例,AWS 參考頁面位于此處以獲取更多資訊。
匹配以“myval”開頭的 t1 標記的所有值(注意,本示例中使用 --query 引數僅選擇實體 id,因此我們可以快速比較結果而無需滾動所有 JSON 輸出):
$ aws ec2 describe-instances --filters Name=tag:t1,Values=myval* --query "Reservations[*].Instances[*].InstanceId" --output text
匹配逗號分隔的值串列:
$ aws ec2 describe-instances --filters Name=tag:t1,Values=t1val1,t1val2
匹配單個字符通配符:
$ aws ec2 describe-instances --filters Name=tag:t1,Values=t1val?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/430418.html
