[英]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"
注意:這里的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
,而不管實例的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.