以易於閱讀的方式列出例項
例項有很多後設資料可以通過呼叫 describe-instances
返回,但通常你只想檢視基礎知識。你可以使用結合表輸出的 JMESPath 查詢以易於閱讀的方式顯示簡明的例項資訊。
aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType}"
+-----------+---------------+----------+------------+
| Id | Name | State | Type |
+-----------+---------------+----------+------------+
| i-abc123 | None | stopped | m3.large |
| i-def456 | amazon linux | stopped | t2.micro |
| i-ghi789 | proxy | running | t2.micro |
+-----------+---------------+----------+------------+
現在讓我們一塊一塊地打破它。首先,我們有 --output table
。這將生成響應的彩色表表示。對於返回小資料集的命令或已將資料過濾掉的命令,這通常最有用。
現在到了 --query
。這看起來很長,但實際上很簡單。第一部分是 Reservations[].Instances[]
。這將返回所有返回例項的展平列表。
查詢的下一部分用 .{}
封裝。這樣做是為列表中的每個項建立一個新的 json 物件,其中每個值都是要應用於源物件的 JMESPath 查詢(在本例中為 Instance)。其中大部分都非常簡單,但是 Name
有點複雜。
獲取 Name
的完整查詢是 Tags[?Key == 'Name'].Value | [0]
。第一部分,Tags[?Key == 'Name']
正在例項的標籤中搜尋關鍵字為 Name
的標籤。下半部分 .Value | [0]
正在選擇每個標籤的值,然後從列表中取出第一個專案(在這種情況下,只會有一個)。
你在桌子裡想要的完全取決於你。例如,如果你想新增 DNS 資訊,可以輕鬆新增新金鑰 DNS: PublicDnsName
:
aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType, DNS: PublicDnsName}"
+--------------------------------------------------+-----------+---------------+----------+------------+
| DNS | Id | Name | State | Type |
+--------------------------------------------------+-----------+---------------+----------+------------+
| | i-abc123 | None | stopped | m3.large |
| | i-def456 | amazon linux | stopped | t2.micro |
| ec2-192-168-1-1.us-west-2.compute.amazonaws.com | i-ghi789 | proxy | running | t2.micro |
+--------------------------------------------------+-----------+---------------+----------+------------+