Amazon web services 使用aws ec2从命令行(cli)描述实例时按不起作用的标记进行筛选

Amazon web services 使用aws ec2从命令行(cli)描述实例时按不起作用的标记进行筛选,amazon-web-services,amazon-ec2,aws-cli,Amazon Web Services,Amazon Ec2,Aws Cli,我目前正试图从命令行编写aws ec2查询(在aws Linux中,这并不重要)。我正在尝试设置与以下两项匹配的筛选器: 显示处于关闭状态(代码80)的实例,以及 显示具有标记“ShortPurpose”且其值为“Fleet”的实例 实际上,所有处于关闭状态的实例都将被返回,而不管它们是否设置了“ShortPurpose”:“Fleet”标记 我的实例设置如下: +-------------+--------------+------------------------+--+ | Instan

我目前正试图从命令行编写aws ec2查询(在aws Linux中,这并不重要)。我正在尝试设置与以下两项匹配的筛选器:

  • 显示处于关闭状态(代码80)的实例,以及
  • 显示具有标记“ShortPurpose”且其值为“Fleet”的实例
  • 实际上,所有处于关闭状态的实例都将被返回,而不管它们是否设置了“ShortPurpose”:“Fleet”标记

    我的实例设置如下:

    +-------------+--------------+------------------------+--+
    | Instance ID |     Tag      |       Tag Value        |  |
    +-------------+--------------+------------------------+--+
    | i-09876     | ShortPurpose | Fleet                  |  |
    |             | Organisation | UmbrellaCorp           |  |
    |             | Name         | cloud-01               |  |
    |             | Owner        | ORG-UMBR-ELLA          |  |
    |             | Purpose      | Cloud processing fleet |  |
    +-------------+--------------+------------------------+--+
    |             |              |                        |  |
    | i-12345     |  (no tags)   |                        |  |
    |             |              |                        |  |
    +-------------+--------------+------------------------+--+
    
    我使用的命令是:

    aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --filters "Name=tag:ShortPurpose,Values=Fleet,Name=instance-state-code,Values=80"
    

    结果是标准数组样式的响应。已成功筛选实例状态,但未筛选标记。

    我在AWS doumentation中的一个示例中发现,我的查询格式错误。正确的查询是:

    aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --filters "Name=tag-value,Values=Fleet" "Name=instance-state-code,Values=80"
    

    请注意,我忽略了ShortPurpose标记,而是直接查找可能存在于任何标记中的值。

    我试图验证您的命令,但它在您编写命令时会产生错误:

    Error parsing parameter '--filters': Second instance of key "Name" encountered for input:
    Name=tag:ShortPurpose,Values=Fleet,Name=instance-state-code,Values=80
                                       ^
    This is often because there is a preceeding "," instead of a space.
    
    但是,我能够在沙箱实例上成功地使用它,如下所示:

    aws ec2 describe-instances \
         --query "Reservations[*].Instances[*].InstanceId" \
         --filters Name=tag:ShortPurpose,Values=Fleet Name=instance-state-code,Values=80
    

    过滤器之间需要空格,不需要引号:
    Name=tag:ShortPurpose,Values=Fleet Name=instance state code,Values=80
    。你试过了吗?谢谢。诀窍是每个过滤器必须单独处理,我用引号将它们分组。我发布的答案有效,但我会将你的标记为正确,因为你花了时间回复,你的答案也有效。@anakaine谢谢。我运行了几个实例,将它们标记到您的用例中,以验证:-)我最近似乎也遇到了问题。似乎是AWS API的变化?@four43可能是AWS CLI v1和v2之间的差异?