python-3.x - 当向 AWS 发送 cli 命令时得到“null”,即使我可以看到数据存在
问题描述
发送 CLI 命令 - ec2 describe-instances --instance-id 时,我正在获取所有数据,但我需要专门获取私有 ip,并且它返回 null,即使我可以看到它们。
CLI 命令:ec2 describe-instances --instance-id i-0b7xxxxxxxxxxx --query Reservations[] --output json 返回以下输出:
[
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-1bxxxxxxx",
"InstanceId": "i-0b7xxxxxxxxx",
"InstanceType": "r4.2xlarge",
"KeyName": "QA-xxx-xxxxxyz",
"LaunchTime": "2019-05-21T06:40:57.000Z",
"Monitoring": {
"State": "disabled"
},
"Placement": {
"AvailabilityZone": "eu-west-1c",
"GroupName": "",
"Tenancy": "default"
},
"PrivateDnsName": "ip-172-xxx-11-211.eu-west-
1.compute.internal",
"PrivateIpAddress": "172.xxx.11.211",
"ProductCodes": [],
"PublicDnsName": "",
"State": {
"Code": 16,
"Name": "running"
},
"StateTransitionReason": "",
"SubnetId": "subnet-3362797a",
"VpcId": "vpc-02a19a65",
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"AttachTime": "2019-04-28T11:19:09.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-02a052466755e023d"
}
}
],
"ClientToken": "qa-sip-sc1-1FBXNRII3WO13",
"EbsOptimized": false,
"EnaSupport": true,
"Hypervisor": "xen",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::1xxxxxxx14:instance-profile/qa.tester.SBC-HA",
"Id": "AIPAI2xxxxxRPSC"
},
"NetworkInterfaces": [
{
"Attachment": {
"AttachTime": "2019-04-28T11:19:09.000Z",
"AttachmentId": "eni-attach-05xxxxxa8",
"DeleteOnTermination": false,
"DeviceIndex": 0,
"Status": "attached"
},
"Description": "SC1 interface for HA and cluster maintenance",
"Groups": [
{
"GroupName": "qa-sip-EvgenyZ-qa-Auto-network-clusterSecurityGroup-A4xxxxxxxC8",
"GroupId": "sg-0a2xxxxxxx2a"
}
],
"Ipv6Addresses": [],
"MacAddress": "06:xx:xx:xx:xx:xa",
"NetworkInterfaceId": "eni-xxxxxxxx",
"OwnerId": "xxxxxxx",
"PrivateDnsName": "ip-172-xxx-11-211.eu-west-1.compute.internal",
"PrivateIpAddress": "172.xxx.11.211",
"PrivateIpAddresses": [
{
"Primary": true,
"PrivateDnsName": "ip-172-xxx-11-211.eu-west-1.compute.internal",
"PrivateIpAddress": "172.xxx.11.211"
},
{
"Primary": false,
"PrivateDnsName": "ip-172-xxx-9-204.eu-west-1.compute.internal",
"PrivateIpAddress": "172.xxx.9.204"
}
],
"SourceDestCheck": true,
"Status": "in-use",
"SubnetId": "subnet-3xxxxa",
"VpcId": "vpc-xxxxx5"
}
我想获取 PrivateIpAddresses:172-xxx-9-204 和 172.xxx.11.211。为此,我使用以下 CLI 命令
ec2 describe-instances --instance-id i-0b722cc96f7a14bfc --query
Reservations[].Instances[].PrivateIpAddress[].PrivateIpAddress --output
json
为空。期待:72-xxx-9-204 和 172.xxx.11.211
解决方案
在查询的输出中,--query=Reservations[]
对象Instances
位于列表中。所以你必须先索引到列表中。
[*].Instances[*].PrivateIpAddress
这会给你:
[
[
"172.xxx.11.211"
]
]
相似地,
[*].Instances[*].NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress
给你:
[
[
[
[
"172.xxx.11.211",
"172.xxx.9.204"
]
]
]
]
旁注:AWS CLI 使用 JMESPath 查询语言。您可以在这里试验您的查询:http: //jmespath.org/
推荐阅读
- javascript - 如何从 js [SYMFONY] 中的树枝表中获取信息
- python - 如何在 Selenium 中使用插件?
- python - 无论如何我可以转换变量,以便我可以只使用 1 个“for”循环?
- reactjs - React bootstrap table2扩展一行用最新值更新所有扩展行的值
- python - Python - 根据条件组合两个数组
- reactjs - 为孩子柯里化 React 父函数
- javascript - (index):1 Uncaught ReferenceError:(function) is not defined at HTMLSelectElement.onchange
- reactjs - 如何使用 React 获取 Spotify 授权令牌?
- android - 如何使所有页面反应原生 RTL?
- reactjs - 组件异常错误:对象作为 React 子对象无效(发现:带有键 {_U,_V,_W,_X} 的对象)如果您打算渲染一组子对象