Stu*_*art 7 command-line-interface amazon-ec2 amazon-web-services
我想运行ec2 describe-instances命令并以表格格式获取输出,如下所示(其中name是带有Key'Name'的Tag的值):
----------------------------------------------------------
| DescribeInstances |
+-------------+----------------+--------------+----------+
| instance_id | ip_address | name | state |
+-------------+----------------+--------------+----------+
| i-g93g494d | 99.99.99.01 | name1 | running |
| i-a93f754c | 99.99.99.02 | name2 | running |
+-------------+----------------+--------------+----------+
Run Code Online (Sandbox Code Playgroud)
我可以运行以下命令:
aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output json
Run Code Online (Sandbox Code Playgroud)
并获得输出:
[
[
{
"instance_id": "i-g93g494d",
"state": "running",
"ip_address": "99.99.99.01",
"name": [
"name1"
]
}
],
[
{
"instance_id": "i-a93f754c",
"state": "running",
"ip_address": "99.99.99.02",
"name": [
"name2"
]
}
]
]
Run Code Online (Sandbox Code Playgroud)
但是,当我使用--output表而不是--output json运行相同的命令时,我得到一个错误.
命令:
aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output json
Run Code Online (Sandbox Code Playgroud)
输出:
list index out of range
Run Code Online (Sandbox Code Playgroud)
我希望表输出看起来像上面的例子,但我很难解决这个问题.我非常感谢任何人都能提供的任何帮助.
Vol*_*soy 17
您需要使用管道表达式来过滤标记结果并获取第一个值,例如:
aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'] | [0].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output table
Run Code Online (Sandbox Code Playgroud)
这里有一篇很好的相关博客文章:获取一个包含id,name和type的实例列表
| 归档时间: |
|
| 查看次数: |
6616 次 |
| 最近记录: |