使用带有EC2 API的过滤器检查实例状态

时间:2014-02-08 05:55:28

标签: amazon-web-services amazon-ec2 aws-cli

我想确保实例已使用命令行传递了两个状态检查(系统/实例可访问性检查)。

当我运行时

ec2-describe-instance-status
ec2-describe-instance-status XX($InstanceID)

它会显示正在运行的实例,如

INSTANCE    $InstanceID $REGION running 16

但是当我尝试添加过滤器以确保实例通过状态检查

ec2-describe-instance-status XX($InstanceID) --filter instance-status.reachability=passed
ec2-describe-instance-status XX($InstanceID) --filter "instance-status.reachability=passed"
ec2-describe-instance-status --filter instance-status.reachability=passed

什么都没有回来。

我已经仔细检查了实例运行正常并实际通过了2次状态检查,但为什么在应用过滤器后没有返回任何内容?

更新 为了回应Rico,我尝试了-v选项

ec2-describe-instance-status -v

返回instanceStatusSet中的一个项目,其中包含字段

    <item>
      <instanceId>i-XXX</instanceId>
      <availabilityZone>us-east-1d</availabilityZone>
      <instanceState>
        <code>16</code>
        <name>running</name>
      </instanceState>
    </item>

,而

ec2-describe-instance-status --filter instance-status.reachability=passed -v
ec2-describe-instance-status --filter "instance-status.reachability=passed" -v

都返回一个空的instanceStatusSet ...

1 个答案:

答案 0 :(得分:1)

请改用AWS Command Line Interface统一工具。

aws ec2 describe-instance-status --instance-ids i-01234567 --filters Name=instance-status.reachability,Values=passed
{
"InstanceStatuses": [
    {
        "InstanceId": "i-01234567",
        "InstanceState": {
            "Code": 16,
            "Name": "running"
        },
        "AvailabilityZone": "us-west-2c",
        "SystemStatus": {
            "Status": "ok",
            "Details": [
                {
                    "Status": "passed",
                    "Name": "reachability"
                }
            ]
        },
        "InstanceStatus": {
            "Status": "ok",
            "Details": [
                {
                    "Status": "passed",
                    "Name": "reachability"
                }
            ]
        }
    }
]
}