

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 资源管理器搜索查询示例
<a name="using-search-query-examples"></a>

以下示例显示了可以在 AWS 资源探索器 中使用的常见查询类型的语法。

**重要**  
如果您使用 AWS CLI `search` 命令并且您的 `--query-string` 参数值将 `-` 运算符作为第一个字符，则必须使用等号字符（`=`）而不是通常的空格字符将参数名称与其值分开。如果您使用空格字符，则 CLI 会误解该字符串。例如，下面的查询将失败。  

```
aws resource-explorer-2 search --query-string "-tag:none region:us-east-1"
```
以下更正后的查询用 `=` 替换了空格，将按预期运行。  

```
aws resource-explorer-2 search --query-string="-tag:none region:us-east-1"
```
如果您更改查询字符串中筛选条件的顺序，使 `-` 不作为参数值中的第一个字符，则可以使用标准空格字符。以下查询有效。  

```
aws resource-explorer-2 search --query-string "region:us-east-1 -tag:none"
```

## 搜索未标记的资源
<a name="example-1"></a>

如果您想在账户中使用[基于属性的访问权限控制（ABAC）](https://aws.amazon.com/identity/attribute-based-access-control/)、使用[基于成本的分配](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)，或对资源执行基于标签的自动化，则需要知道账户中哪些资源可能缺少标签。以下示例查询使用特殊情况筛选条件[标签：无](using-search-query-syntax.md#query-syntax-filters)来返回缺少用户生成标签的所有资源。

`tag:none` 筛选条件仅适用于*用户创建的*标签。由 AWS 生成和维护的标签不受此筛选条件的限制，并且仍会显示在结果中。

```
tag:none
```

要同时排除 AWS 创建的所有系统标签，请按下例所示添加第二个筛选条件。查询字符串中的第一个元素通过筛选掉所有用户创建的标签来复制前面的示例。AWS 创建的系统标签*始终*以字母 `aws` 开头。因此，您可以将[逻辑 NOT 运算符（-）](using-search-query-syntax.md#query-syntax-operators) 与 [tag.key 筛选条件](using-search-query-syntax.md#query-syntax-filters)一起使用，以排除任何带有密钥名称以 `aws` 开头的标签的资源。

```
tag:none -tag.key:aws*
```

## 搜索标记的资源
<a name="example-2"></a>

要查找所有带有任何类型标签的资源，您可以如下所示使用[逻辑 NOT 运算符（-）](using-search-query-syntax.md#query-syntax-operators) 和特殊情况[标签：无](using-search-query-syntax.md#query-syntax-filters)筛选条件。

```
-tag:none
```

## 搜索缺少特定标签的资源
<a name="example-3"></a>

同样与 ABAC 相关的是，您可能需要搜索所有未带有指定键的标签的资源。以下示例使用[逻辑 NOT 运算符 `-`](using-search-query-syntax.md#query-syntax-operators) 返回缺少带有键名称 `Department` 的标签的所有资源。

```
-tag.key:Department
```

## 搜索标签值无效的资源
<a name="example-4"></a>

出于合规性考虑，您可能希望搜索所有在重要标签上缺少标签值或存在拼写错误的资源。以下示例返回所有带有键名称为 `environment` 的标签的资源。但是，该查询会筛选出任何有效值为 `prod`、`integ` 或 `dev` 的资源。此查询中出现的任何结果都有其他一些值，您应该对它们进行调查并更正。

**重要**  
资源管理器搜索***不***区分大小写，也无法区分键名称和仅因大小写方式而不同的值。例如，以下示例中的值与 `PROD`、`prod`、`PrOd` 或任何变体匹配。但是，有些应用程序以区分大小写的方式使用标签。建议您对组织的大小写策略进行标准化，例如仅使用小写的标签键名称和值。一致的方法可以帮助避免由于标签的大小写不同而引起的混淆。

```
tag.key:environment -tag:environment=prod -tag:environment=integ -tag:environment=dev
```

## 在 AWS 区域 的子集中搜索资源
<a name="example-5"></a>

使用 [`'*'` 通配符运算符](using-search-query-syntax.md#query-syntax-operators)匹配世界上某个地区的所有区域。以下示例返回位于欧洲（EU）区域的所有资源。

```
region:eu-*
```

## 搜索全局资源
<a name="example-6"></a>

使用 `region:` 筛选条件的特殊情况 `global` 值来查找被认为是全局性且与单个区域无关的资源。

```
region:global
```

## 搜索位于特定区域的特定类型的资源
<a name="example-7"></a>

使用多个筛选条件时，资源管理器通过将前缀与隐式逻辑 `AND` 运算符组合来计算表达式。以下示例返回亚太地区（香港）区域中且 `AND` 均为 Amazon EC2 实例的所有资源。

```
region:ap-east-1 resourcetype:ec2:instance
```

**注意**  
由于隐式 `AND`，您可以成功地对只能有一个与资源关联的值的属性使用一个筛选条件。例如，一个资源只能是一个 AWS 区域 的一部分。因此，以下查询将不返回结果。  

```
region:us-east-1 region:us-west-1
```
此限制***不***适用于可以同时拥有多个值的属性的筛选条件，例如 `tag:`、`tag.key:` 和 `tag.value:`。

## 搜索包含多词术语的资源
<a name="example-8"></a>

用[双引号（`"`）](using-search-query-syntax.md#query-syntax-operators)将多词术语括起来，以仅返回整个术语按指定顺序排列的结果。如果不使用双引号，资源管理器将返回与构成该术语的任何单个单词相匹配的资源。例如，以下查询使用双引号仅返回与术语 `"west wing"` 匹配的资源。该查询***不***匹配 `us-west-2` AWS 区域（或其代码中包含 `west` 的任何其他区域）中的资源或与“wing”一词匹配但没有“west”一词的资源。

```
"west wing"
```

## 搜索作为指定 CloudFormation 堆栈一部分的资源
<a name="example-9"></a>

当您创建资源作为 CloudFormation 堆栈的一部分时，它们都会*自动*用堆栈的名称进行标记。以下示例返回作为指定堆栈的一部分创建的所有资源。

```
tag:aws:cloudformation:stack-name=my-stack-name
```