

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Resource Explorer 的搜尋查詢語法參考
<a name="using-search-query-syntax"></a>

AWS 資源總管 可協助您在 中找到個別 AWS 資源 AWS 帳戶。為了協助您尋找所需的確切資源，Resource Explorer 接受支援本主題中所述語法的搜尋查詢字串。如需示範如何使用此處所述功能的查詢範例，請參閱 [範例資源總管搜尋查詢](using-search-query-examples.md)。

**注意**  
目前，連接至 AWS Identity and Access Management （IAM） 資源的標籤，例如角色或使用者，不會編製索引。

## 查詢在 Resource Explorer 中的運作方式
<a name="query-background"></a>

搜尋查詢一律使用檢視。如果您未明確指定一個，Resource Explorer 會使用指定為您正在使用的 預設值 AWS 區域 的檢視。

檢視會決定哪些資源可供您查詢。您可以建立不同的檢視，每個檢視都會傳回不同的資源集。

例如，您可以建立僅包含以 金鑰`Environment`和 值 標記之資源的檢視`Production`。然後，您可以選擇僅將該檢視的存取權授予具有檢視這些資源之業務理由的使用者。需要檢視這些資源的不同使用者可以存取包含 `Alpha`或 `Beta`環境資源的個別檢視。如需有關控制誰存取哪些檢視的資訊，請參閱 [授與資源總管檢視的存取權以進行搜尋](manage-views-grant-access.md)。

## 查詢字串語法
<a name="query-syntax"></a>

本節提供有關查詢語法、篩選條件和篩選條件運算子的基本層面的資訊。

### 基本概念
<a name="query-syntax-basics"></a>

最基本而言， `QueryString`是由邏輯`OR`運算子*隱含*聯結的一組自由格式文字關鍵字。使用空格將每個關鍵字與其他關鍵字分開，如下列範例所示：

`ec2 billing test gamma`

Resource Explorer 會評估此關鍵字清單，以表示：

`ec2 OR billing OR test OR gamma`

Resource Explorer 會依關聯性排序結果，對符合更多搜尋詞彙的資源提供更高的偏好。不符合一或多個術語的資源不會從結果中排除。不過，Resource Explorer 會將其視為關聯性較低的資源，並在搜尋結果中進一步向下推。

如果您為 `QueryString` 參數指定空字串，您的查詢會傳回前 1，000 個可用資源，這些資源可透過用於 操作的檢視取得。任何查詢可傳回的資源數目上限為 1，000。

**注意**  
AWS 保留更新相符邏輯和關聯性演算法以評估自由格式文字關鍵字的權利，以便我們可以為客戶提供最相關的結果。因此，使用自由格式文字關鍵字針對相同查詢傳回的結果可能會隨著時間而變更。如果您需要更確定性的結果，建議您使用篩選條件。篩選條件比對邏輯不會隨著時間而變更。

### 篩選條件
<a name="query-syntax-filters"></a>

您可以更嚴格地限制查詢的結果，方法是包含***篩選條件* **。與文字關鍵字不同，篩選條件會在查詢中與**AND**運算子一起評估。例如，請考慮下列查詢，其中包含兩個自由格式關鍵字和兩個篩選條件：

```
test instance service:EC2 region:us-west-2
```

此查詢的評估方式如下：

```
( test OR instance ) AND service:EC2 AND region:us-west-2
```

一律使用**AND**邏輯運算子評估篩選條件。如果資源與篩選條件不相符，則該資源不會包含在結果中。範例查詢的結果包含與 Amazon 相關聯的任何資源EC2，且位於美國西部 （奧勒岡）， AWS 區域 且至少以某種方式連接其中一個關鍵字。

**注意**  
由於隱含 `AND`，因此您只能成功針對屬性使用一個篩選條件，該屬性只能有一個與資源相關聯的值。例如，資源只能是 的一部分 AWS 區域。因此，下列查詢不會傳回任何結果。  

```
region:us-east-1 region:us-west-1
```
此限制***不適用於***可同時具有多個值的屬性篩選條件，例如 `tag:`、 `tag.key:`和 `tag.value:`。

下表列出可用於 Resource Explorer 搜尋查詢的可用篩選條件名稱。


| 篩選器名稱 | 描述和範例 | 
| --- | --- | 
|  `accountid:`  |   AWS 帳戶 擁有 資源的 。Resource Explorer 只會在結果中包含指定帳戶擁有的資源。 `accountid:123456789012`  | 
|  `application:`  |  此篩選條件可讓您搜尋具有`awsApplication`標籤索引鍵和資源群組值的資源。您可以依應用程式名稱或應用程式資源群組 進行搜尋ARN。 `application:MyApplicationName` `application:arn:aws:resource-groups:us-east-1:123456789012:group/MyApplicationName/123456789abced` `arn:aws:resource-groups:us-east-1:123456789012:group/MyApplicationName/123456789abced`  若要使用此篩選條件，您的檢視必須具有標記資料的存取權。   | 
|  `id:`  |  個別資源的識別符，以 [Amazon 資源名稱 （ARN）](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) 表示。 `id:arn:aws:license-manager:us-east-1:123456789012:license-configuration:lic-ecbd5574fd92cb0d312baea26EXAMPLE`  | 
|  `region:`  |  資源所在的 AWS 區域 。Resource Explorer 只會在結果中包含位於指定 的資源 AWS 區域。 `region:us-east-1`  僅輸入區域碼 （沒有篩選條件，例如 `us-east-1`） 不會傳回與 相同的結果`region:us-east-1`。此結果是因為，作為非篩選條件的自由格式文字關鍵字，區域碼會細分為其個別片段。例如， `us-east-1` 會搜尋為 `us`、 `east`和 `1`。當您使用 `region:` 字首時，不會發生對元件的分解。   | 
|  `region:global`  |  `region:` 篩選條件的特殊案例，可用來尋找與個人無關 AWS 區域 但被視為在範圍內全域的資源。 `region:global`  僅輸入關鍵字`global`不會傳回與「全域」`region:global`文字文字未連接至全域資源相同的結果。鍵入`global`為關鍵字只會傳回具有與資源關聯之常值字串的資源。   | 
|  `resourcetype:`  |  `service:type` 符號中的資源類型。Resource Explorer 只會在結果中包含指定類型的資源。 `resourcetype:ec2:instance`  | 
|  `resourcetype.supports:`  |  此篩選條件可讓您搜尋支援標籤的資源。 `tags`是唯一支援的值。Resource Explorer 只會在結果中包含可標記的資源。 `resourcetype.supports:tags`  | 
|  `service:`  |  與資源類型 AWS 服務 相關聯的 。Resource Explorer 只會在結果中包含由指定服務建立和管理的資源。 `service:ec2`  | 
|  `tag:`  |  以 表示的標籤鍵/值對`<key>=<value>`。Resource Explorer 只會在結果中包含具有相符金鑰和指定值之標籤的資源。 `tag:environment=production`  | 
|  `tag:all`  |  `tag:` 篩選條件的特殊案例，可讓您搜尋已連接一或多個使用者建立標籤的資源，即使 Resource Explorer 不支援該資源類型。  具有*AWS 服務建立*標籤的資源仍會顯示在此篩選條件的結果中。   | 
|  `tag:none`  |  `tag:` 篩選條件的特殊案例，可讓您搜尋未連接任何使用者建立標籤的任何資源。  具有*AWS 服務建立*標籤的資源仍會顯示在此篩選條件的結果中。   | 
|  `tag.key:`  |  標籤金鑰。Resource Explorer 只會在結果中包含具有相符索引鍵標籤的資源，無論值為何。 `tag.key:environment`  | 
|  `tag.value:`  |  標籤值。Resource Explorer 只會在結果中包含具有相符值標籤的資源，無論金鑰名稱為何。 `tag.value:production`  | 

### 篩選運算子
<a name="query-syntax-operators"></a>

您可以修改關鍵字和篩選條件，方法是將下表中顯示的其中一個運算子作為字串的一部分。


| 運算子 | 描述和範例 | 
| --- | --- | 
|  `"multiple word phrase"` 或 "*hyphenated-phrase*"  |  包圍多字片語，應視為具有雙引號字元 （） 的單一關鍵字`" "`。Resource Explorer 僅包含符合整個片語、所有單字一起並依指定順序排列的資源。 如果您不使用雙引號，Resource Explorer 會依空格或連字號將片語分解為元件，並包含符合個別元件的資源，即使它們不在一起或順序不同。引號應該在運算子之後圍繞一切。 `"This matches only resources with the whole sentence."` `This matches resources with any of the words.` `"us-east-1"` – 僅比對與該確切區域相關聯的資源。 `us-east-1` – 符合包含「us」或「east」或「1」的任何資源。 `-tag:"environment=production"`   | 
|  `keyword*`  |   字首萬用字元比對。您只能將萬用字元 （星號 `*`） 放在字串的結尾。Resource Explorer 只會在結果中包含值開頭為 前綴文字的資源`*`。下列範例會比對以 AWS 區域 開頭的所有 `us-east`。 `region:us-east*`  統一搜尋會在字串中第一個關鍵字的結尾自動插入萬用字元 （`*`） 運算子。這表示統一的搜尋結果包含符合以指定關鍵字開頭之任何字串的資源。 Resource Explorer 主控台中[資源搜尋](https://console.aws.amazon.com/resource-explorer/home#/explorer)頁面上**查詢**文字方塊執行的搜尋***不會***自動附加萬用字元。您可以在搜尋字串中的任何字詞之後`*`手動插入 。   | 
|  `-keyword`  |  `Not` 運算子。您可以在其關鍵字或篩選條件的開頭放置連字號 （`-`），以反轉搜尋結果。Resource Explorer 會從結果***中排除***任何與此運算子後面關鍵字或篩選條件相符的資源。下列範例會導致與 Amazon EC2服務相關聯的所有資源從結果中排除。 `-service:ec2`  如果您使用 AWS CLI `search`命令，且`--query-string`參數值將`-`運算子作為第一個字元，則必須將參數名稱與具有相等符號字元 （`=`） 的值分開，而不是一般空格字元。如果您使用空格字元， 會CLI錯誤解讀字串。例如，下列查詢會失敗。 <pre>aws resource-explorer-2 search --query-string "-tag:none region:us-east-1"</pre> 下列已修正的查詢字串使用 `=`取代空格，可如預期運作。 <pre>aws resource-explorer-2 search --query-string="-tag:none region:us-east-1"</pre> 如果您變更查詢字串中篩選條件的順序，使得 `-`不是參數值中的第一個字元，則可以使用標準空格字元。下列查詢字串有效。 <pre>aws resource-explorer-2 search --query-string "region:us-east-1 -tag:none"</pre>   | 
| \$1<special character> |  您可以逸出必須完全按照所示方式包含的特殊字元，而不是解譯。如果您的文字包含其中一個特殊字元 （` * " - : = \`），則您必須在該字元前面加上反斜線 （`\`），以確保實際使用字元。下列範例示範如何使用包含連字號 （`-`） 字元 （） 的自由格式文字關鍵字`"my-key-word"`。 此外，為了防止 Resource Explorer 將連字號的表達式分成三個不同的關鍵字，您可以使用雙引號包圍整個片語。  `"my\-key\-word"`  若要插入常值反斜線，請在資料列中插入兩個反斜線字元。第一個反斜線會解譯為逸出，而第二個反斜線是要插入的常值字元。 `"some_text\\some_more_text"`  | 

**注意**  
如果檢視包含連接至 資源的標籤，則`Search`操作不會擲回搜尋字串的驗證錯誤，因為無效篩選條件也可以解譯為自由格式文字搜尋。例如，即使`cat:blue`***看起來***像篩選條件，Resource Explorer 也無法將其剖析為一個篩選條件，因為 `cat:` 不是有效且已定義的篩選條件之一。相反地，Resource Explorer 會將整個字串解譯為自由格式搜尋字串，以允許其比對標籤金鑰名稱或 片段等物件ARN。  
如果下列任一情況為 true，操作會擲回驗證錯誤：  
檢視不包含標籤的相關資訊
搜尋查詢明確使用標籤篩選條件 （`tag.value:`、 `tag.key:`或 `tag:`）