列出并筛选您的资源 - Amazon Elastic Compute Cloud

列出并筛选您的资源

您可以使用 Amazon EC2 控制台获取一些类型的资源的列表。您可以使用相应命令或 API 操作获取每种类型的资源的列表。如果您拥有许多资源,可以筛选结果以仅包含符合特定标准的资源。

高级搜索

高级搜索使您可以通过组合筛选条件执行搜索,从而获得精确的结果。您可以按关键字、用户定义的标签键以及预定义的资源属性进行筛选。

可用的特定搜索类型有:

  • 按关键字搜索

    要按关键字进行搜索,请在搜索框中键入或粘贴要查找的内容,然后选择 Enter。例如,要搜索特定实例,可以键入实例 ID。

  • 按字段搜索

    也可以按与资源关联的字段、标签和属性进行搜索。例如,若要查找处于停止状态的所有实例:

    1. 在搜索框中,开始键入 Instance State。随着您的键入,将显示建议字段的列表。

    2. 从列表中选择 Instance State (实例状态)

    3. 从建议值列表中选择 Stopped (已停止)

    4. 要进一步优化您的列表,请选择搜索框以获得更多搜索选项。

  • 高级搜索

    可以通过添加多个筛选器创建高级查询。例如,可以按标签进行搜索,并查看生产堆栈中运行的 Flying Mountain 项目的实例,然后按属性搜索以查看所有 t2.micro 实例,或查看 us-west-2a 中的所有实例,或者查看同时符合这两个条件的实例。

  • 逆向搜索

    您可以搜索与特定值不匹配的资源。例如,要列出未终止的所有实例,可按 Instance State(实例状态) 字段进行搜索,并为已终止值添加惊叹号前缀 (!)。

  • 部分搜索

    按字段进行搜索时,还可以输入部分字符串以查找字段中包含该字符串的所有资源。例如,先按 Instance Type (实例类型) 搜索,然后键入 t2 以查找所有 t2.micro、t2.small 或 t2.medium 实例。

  • 正则表达式

    当需要匹配字段中具有特定模式的值时,可以使用正则表达式。例如,先按名称标签搜索,然后键入 ^s.* 以查看其名称标签以“s”开头的所有实例。正则表达式搜索不区分大小写。

获得搜索的精确结果之后,您可以为 URL 添加书签以便于参考。在具有数千实例的情况下,筛选条件和书签可以为您节省大量时间;您不必重复运行搜索。

结合搜索筛选条件

通常,具有相同键字段 (例如,tag:Name、search、Instance State) 的多个筛选条件会自动以 OR 运算符联接。这是特意设计的,因为绝大部分筛选条件如果以 AND 运算符联接将不合逻辑。例如,如果以“Instance State=running AND Instance State=stopped”为条件进行搜索,将返回零个结果。在许多情况下,您可以对不同键字段使用补充性搜索词来细化搜索结果,此时将自动改用 AND 规则。如果您搜索“tag: Name:=All values AND tag:Instance State=running”,您将获得包含这两个条件的搜索结果。要优化结果,您只需删除字符串中的一个筛选条件,直到结果符合您的要求。

使用控制台列出资源

您可以使用控制台查看最常用的 Amazon EC2 资源类型。要查看其他资源,请使用命令行界面或 API 操作。

要使用控制台列出 EC2 资源

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择与资源对应的选项,例如 AMIInstances

    
                     Amazon EC2 控制台导航窗格
  3. 页面会显示所有可用资源。

使用控制台筛选资源

您可以使用 Amazon EC2 控制台对最常用的资源类型执行筛选和分类。例如,可以使用实例页面上的搜索栏按标签、属性或关键字对实例进行分类。

您还可以使用每个页面上的搜索字段查找具有特定属性或值的资源。您可以使用正则表达式搜索部分或多个字符串。例如,要查找使用 MySG 安全组的所有实例,请在搜索字段中输入 MySG。结果将包括字符串中包含 MySG 的所有值,例如 MySG2 MySG3。要将结果限制为只显示 MySG,请在搜索字段中输入 \bMySG\b。要列出类型为 m1.smallm1.large 的所有实例,请在搜索字段输入 m1.small|m1.large

列出 us-east-1b 可用区中状态为 available 的卷

  1. 在导航窗格中,选择 Volumes

  2. 单击搜索框,从菜单中选择附加状态,然后选择已分离。(分离的卷可附加到同一个可用区域中的某个实例上。)

  3. 再次单击搜索框,选择 State (状态),然后选择 Available (可用)

  4. 再次单击搜索框中,选择 Availability Zone (可用区),然后选择 us-east-1b

  5. 会显示所有符合此标准的卷。

列出由 Amazon EBS 支持的公有 64 位 Linux AMI

  1. 在导航窗格中,选择 AMIs

  2. Filter 窗格中,从 Filter 列表中依次选择 Public imagesEBS images 和您的 Windows

  3. 在搜索字段中键入 x86_64

  4. 会显示所有符合此标准的 AMI。

使用 CLI 和 API 列出并筛选

每个资源类型都有相应的 CLI 命令和 API 操作,您可用来列出该类型的资源。生成的资源列表可能很长,因此筛选结果以仅包括符合特定条件的资源可能会更快、更有用。

筛选注意事项

  • 您可以在单一请求中指定多个筛选条件和多个筛选条件值。

  • 您可以将通配符与筛选值一同使用。星号 (*) 匹配零个或多个字符,而问号 (?) 匹配零个或一个字符。

  • 筛选值区分大小写。

  • 您的搜索中可包含通配符的字面值;您只需要在字符前用反斜线隔开字符。例如,用 \*amazon\?\\ 值搜索文字字符串 *amazon?\

支持的筛选条件

要查看每个 Amazon EC2 资源支持的筛选条件,请参阅以下文档:

例 示例:指定单个筛选条件

您可以使用 describe-instances 实例列出您的 Amazon EC2 实例。如果没有筛选条件,响应中包含您所有资源的信息。您可以使用以下命令在输出中仅包含正在运行的实例。

aws ec2 describe-instances --filters Name=instance-state-name,Values=running

要仅列出正在运行的实例的实例 ID,请按如下方式添加 --query 参数。

aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query "Reservations[*].Instances[*].InstanceId" --output text

下面是示例输出:

i-0ef1f57f78d4775a4 i-0626d4edd54f1286d i-04a636d18e83cfacb

例 示例:指定多个筛选条件或筛选条件值

如果指定多个筛选条件或多个筛选条件值,则资源必须与所有筛选条件匹配才能包括在结果中。

您可以使用以下命令列出类型为 m5.largem5d.large 的所有实例。

aws ec2 describe-instances --filters Name=instance-type,Values=m5.large,m5d.large

您可以使用以下命令列出类型为 t2.micro 的所有已停止实例。

aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped Name=instance-type,Values=t2.micro

例 示例:在筛选条件值中使用通配符

如果在使用 describe-snapshots 描述 EBS 快照时将“数据库”指定为 description 筛选条件的筛选条件值,则该命令仅返回描述为“数据库”的快照。

aws ec2 describe-snapshots --filters Name=description,Values=database

* 通配符可与零个或多个字符匹配。如果将 *数据库* 指定为筛选条件值,则该命令将仅返回其描述包含字词“数据库”的快照。

aws ec2 describe-snapshots --filters Name=description,Values=*database*

? 通配符完全匹配 1 个字符。如果指定“数据库?”作为筛选条件值,该命令仅返回描述为“数据库”或“数据库”后跟一个字符的快照。

aws ec2 describe-snapshots --filters Name=description,Values=database?

如果指定 database????,该命令将仅返回其描述为“数据库”后跟最多四个字符的快照。它不包括带有“数据库”后跟五个或更多字符的说明。

aws ec2 describe-snapshots --filters Name=description,Values=database????

例 示例:基于日期进行筛选

使用 AWS CLI,您可以使用 JMESPath 通过表达式来筛选结果。例如,以下 describe-snapshots 命令显示您的 AWS 账户在指定日期(由 2020-03-31 表示)之前创建的所有快照的 ID(由 123456789012 表示)。如果未指定所有者,则结果将包括所有公有快照。

aws ec2 describe-snapshots --filters Name=owner-id,Values=123456789012 --query "Snapshots[?(StartTime<=`2020-03-31`)].[SnapshotId]" --output text

以下命令显示在指定日期范围内创建的所有快照的 ID。

aws ec2 describe-snapshots --filters Name=owner-id,Values=123456789012 --query "Snapshots[?(StartTime>=`2019-01-01`) && (StartTime<=`2019-12-31`)].[SnapshotId]" --output text

基于标签进行筛选

有关如何根据资源标签筛选资源列表的示例,请参阅通过 CLI 或 API 使用标签