Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 用JMESpath构造对象_Amazon Web Services_Aws Cli_Jmespath - Fatal编程技术网

Amazon web services 用JMESpath构造对象

Amazon web services 用JMESpath构造对象,amazon-web-services,aws-cli,jmespath,Amazon Web Services,Aws Cli,Jmespath,我正在尝试使用AWS CLI构建一个JMESpath查询,该查询打印一个表,将一些选定的属性显示为行。我可以使用jq获得我想要的,但我只想使用awscli来实现,这样它就可以格式化为一个表。这可能吗?下面是我想要的输出,使用jqobjectconstruction语法: % aws --output json ec2 describe-instances --instance-id $id --query 'Reservations[].Instances[0]' | jq '.[0] | {I

我正在尝试使用AWS CLI构建一个JMESpath查询,该查询打印一个表,将一些选定的属性显示为行。我可以使用
jq
获得我想要的,但我只想使用
awscli
来实现,这样它就可以格式化为一个表。这可能吗?下面是我想要的输出,使用
jq
objectconstruction语法:

% aws --output json ec2 describe-instances --instance-id $id --query 'Reservations[].Instances[0]' | jq '.[0] | {InstanceType,PrivateIpAddress,LaunchTime}'
{
  "InstanceType": "g4dn.4xlarge",
  "PrivateIpAddress": "172.31.15.37",
  "LaunchTime": "2021-02-17T14:49:30+00:00"
}
最接近我的方法是使用多选散列,但这会使每个项都成为一列,因此如果有多个项,则效果不佳

% aws --output table ec2 describe-instances --instance-id $id --query 'Reservations[].Instances[0].{size: InstanceType, PrivateIP: PrivateIpAddress, LaunchTime: LaunchTime}' 
---------------------------------------------------------------
|                      DescribeInstances                      |
+---------------------------+----------------+----------------+
|        LaunchTime         |   PrivateIP    |     size       |
+---------------------------+----------------+----------------+
|  2021-02-17T14:49:30+00:00|  172.31.15.37  |  g4dn.4xlarge  |
+---------------------------+----------------+----------------+

< > >代码>表>代码>输出将把不同的JSON对象看作不同的行。
如果确实希望每行有一个属性,则可以使用JMESPath查询为每个属性创建一个对象,如下所示:

Reservations[]实例[0]。[{Property:`LaunchTime`,Value:LaunchTime},{Property:`Size`,Value:InstanceType},{Property:`PrivateIP`,Value:PrivateIpAddress}]
在JSON结构上,例如:

{
“保留”:[
{
“实例”:[
{
“InstanceType”:“g4dn.4XL”,
“PrivateIP地址”:“172.31.15.37”,
“启动时间”:“2021-02-17T14:49:30+00:00”
}
]
}
]
}
这将为您提供此JSON的结果:

[
[
{
“属性”:“启动时间”,
“值”:“2021-02-17T14:49:30+00:00”
},
{
“属性”:“大小”,
“值”:“g4dn.4XL”
},
{
“财产”:“私有财产”,
“价值”:“172.31.15.37”
}
]
]
然后,该表应该如下所示:

----------------------------------------------
|描述说明|
+--------------+-----------------------------+
|财产价值|
+--------------+-----------------------------+
|发射时间| 2021-02-17T14:49:30+00:00|
+--------------+-----------------------------+
|尺寸| g4dn.4XL|
+--------------+-----------------------------+
|私有财产| 172.31.15.37|
+--------------+-----------------------------+

但这会使每个项目都成为一列,因此如果有多个项目,看起来就不太好。您可以举一个例子,因为您的实际示例只显示了表中的一个项目,因此只有一个实例。我在示例中只包含了3个属性,但我将使用大约10个属性,这使得表非常宽。哦,所以您希望每个属性都有一行,对吗?非常好,谢谢!