我正在尝试使用AWS CLI获取几个EC2实例的状态
aws ec2 describe-instance-status --instance-ids xxxxxx yyyyyyyy zzzzzzzz
但是在输出中,它只列出正在运行的实例,而不列出已停止的实例。
如何查看实例状态,即使它们正在运行或停止
检查instance-state
有不同的方法。
:
describe-instance-status。
可以使用
describe-instance-status
:在AWS命令行中,describe-instance-status
命令用于检索一个或多个Amazon EC2实例的状态。默认情况下,它返回运行实例的状态。要在返回的状态信息中包含已停止的实例,可以使用--include-all-instances
选项。
下面是一个如何使用该选项的示例:
$ aws ec2 describe-instance-status --include-all-instances
上述命令将返回正在运行和已停止实例的状态信息。
注意,您还可以使用--filters
选项过滤返回的结果。例如,您可以使用以下命令仅检索已停止实例的状态:
$aws ec2 describe-instance-status --filters "Name=instance-state-code,Values=80"
注意:这里80
是stopped
实例的代码,16
是running
实例的代码。下面一个将给你关于stopped
实例的信息。
$ aws ec2 describe-instance-status --include-all-instances --filters Name=instance-state-name,Values='stopped'
您可以同时获得
running
以及stooped
instance-state
,同时包括以下给定示例中使用的选项--include-all-instances
…
$ aws ec2 describe-instance-status --include-all-instances --filters Name=instance-state-name,Values='*' --query 'InstanceStatuses[*].{InstanceId: InstanceId, State: InstanceState.Name}' --profile lab--output table
------------------------------------
| DescribeInstanceStatus |
+----------------------+-----------+
| InstanceId | State |
+----------------------+-----------+
| i-0a4209dkc6549a2ea | running |
| i-09379cj420ed015f2 | running |
| i-0c9e1100de0105ed6 | stopped |
| i-0f57b147ea9124344 | running |
| i-02e4cbcbe10cb5e79 | stopped |
+----------------------+-----------+
举例描述。
在使用
describe-instances
时,可以检查instance-state-name
而不管(pending | running | shutting-down | terminated | stopping | stopped )
的state
。
$ aws ec2 describe-instances --query 'Reservations[].Instances[*].{InstanceType: InstanceType, InstanceId: InstanceId, State: State.Name}' --profile lab --output table
----------------------------------------------------
| DescribeInstances |
+----------------------+----------------+----------+
| InstanceId | InstanceType | State |
+----------------------+----------------+----------+
| i-0a4209dkc6549a2ea | t3.xlarge | running |
| i-09379cj420ed015f2 | t2.small | running |
| i-0c9e1100de0105ed6 | m5.xlarge | stopped |
| i-0f57b147ea9124344 | c6i.xlarge | running |
| i-02e4cbcbe10cb5e79 | t1.micro | stopped |
+----------------------+----------------+----------+
然而,您可以使用
--filers
和--query
获得实例的特定state
,例如,如果您正在寻找stopped
实例,那么您可以使用如下…
$ aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --query 'Reservations[].Instances[*].{InstanceType: InstanceType, InstanceId: InstanceId, State: State.Name}' --profile lab --output table
----------------------------------------------------
| DescribeInstances |
+----------------------+----------------+----------+
| InstanceId | InstanceType | State |
+----------------------+----------------+----------+
| i-0c9e1100de0105ed6 | m5.xlarge | stopped |
| i-02e4cbcbe10cb5e79 | t1.micro | stopped |
+----------------------+----------------+----------+
以类似的方式,您可以只检查running
实例…
$ aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[].Instances[*].{InstanceType: InstanceType, InstanceId: InstanceId, State: State.Name}' --profile lab --output table
----------------------------------------------------
| DescribeInstances |
+----------------------+----------------+----------+
| InstanceId | InstanceType | State |
+----------------------+----------------+----------+
| i-0a4209dkc6549a2ea | t3.xlarge | running |
| i-09379cj420ed015f2 | t2.small | running |
+----------------------+----------------+----------+
注意:
此外,我个人喜欢字典格式和表格输出(--output table
),同时使用AWS CLI以漂亮的表格形式获取值,这便于可读性,因此这里以哈希形式(即字典或关联数组)获取instance-state
的值也是如此,你我已经将其与--query
结合起来以获得更好的可读输出。
是的,如果您将--include-all-instances
选项传递给命令,它也将显示已停止的实例
来自AWS文档中关于description -instance-status命令的说明:
--include-all-instances | --no-include-all-instances (boolean)
当为true时,包括所有实例的健康状态。当为false时,仅包括运行实例的健康状态。
默认值:假