簡體   English   中英

aws cli:EC2:獲取實例列表的 state

[英]aws cli: EC2: get the state of list of instances

我正在嘗試使用 AWS CLI 獲取少數 EC2 實例的狀態

   aws ec2 describe-instance-status --instance-ids xxxxxx yyyyyyyy zzzzzzzz

但在 output 它只列出了正在運行的實例,而不是已停止的實例。

我如何查看實例 state,即使它們正在運行或已停止

有不同的方法來檢查instance-state

采用:

描述實例狀態。

您可以使用describe-instance-status :AWS 命令行界面 (CLI) 的describe-instance-status命令用於檢索一個或多個 Amazon Elastic Compute Cloud (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"

注意:這里的80stopped實例的代碼, 16running實例的代碼。 下面一個將為您提供有關stopped實例的信息。

$ aws ec2 describe-instance-status --include-all-instances --filters Name=instance-state-name,Values='stopped'

您可以獲得runningstooped 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 ,而不管實例的state (pending | running | shutting-down | terminated | stopping | stopped )

$ 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的值hash 形式(即字典或關聯數組),我已將其與--query組合以獲得更好的可讀性 output。

是的,如果您將--include-all-instances選項傳遞給命令,它也會顯示已停止的實例

來自關於describe-instance-status命令的 AWS 文檔:

--include-all-instances | --no-include-all-instances (boolean)

當為真時,包括所有實例的健康狀態。 如果為 false,則僅包括正在運行的實例的健康狀態。

默認值:假

要使用 AWS 命令行界面 (CLI) 列出處於“正在運行”或“已停止”狀態的 Amazon Elastic Compute Cloud (EC2) 實例 state,您可以使用 describe-instances 命令並根據State.Name字段。

以下是如何使用 describe-instances 命令和 --query 選項列出所有正在運行或已停止的實例的示例:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, State.Name]' --output text | grep -E 'running|stopped'

如果您想查看所有狀態,則可以刪除 grep 過濾器。 這是一個列出所有實例而不考慮狀態的示例。

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, State.Name]' --output text

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM