以易於閱讀的方式列出例項

例項有很多後設資料可以通過呼叫 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  |
+--------------------------------------------------+-----------+---------------+----------+------------+