при отправке команды cli в AWS, получая «ноль», хотя я вижу, что данные существуют - PullRequest
0 голосов
/ 21 мая 2019

при отправке команды CLI - ec2 description-instances --instance-id, я получаю все данные, но мне нужно получить именно частные ip и их возвращаемый ноль, даже если я их вижу.

Команда CLI: ec2 описывает-экземпляры --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"
                }

Я хочу получить адреса PrivateIp: 172-xxx-9-204 и 172.xxx.11.211. для этого я использую следующую команду CLI

ec2 describe-instances  --instance-id i-0b722cc96f7a14bfc --query 
Reservations[].Instances[].PrivateIpAddress[].PrivateIpAddress --output 
json

становится нулевым. ожидая: 72-ххх-9-204 и 172.ххх.11.211

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

В выводе запроса с --query=Reservations[] объект Instances находится внутри списка.Таким образом, вы должны сначала войти в список.

[*].Instances[*].PrivateIpAddress

Это даст вам:

[
  [
    "172.xxx.11.211"
  ]
]

Аналогично,

[*].Instances[*].NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress

Дает вам:

[
  [
    [
      [
        "172.xxx.11.211",
        "172.xxx.9.204"
      ]
    ]
  ]
]

Примечание. В интерфейсе командной строки AWS используется язык запросов JMESPath.Вы можете поэкспериментировать со своими запросами здесь: http://jmespath.org/

1 голос
/ 21 мая 2019

У меня сработал следующий запрос:

aws ec2 describe-instances --instance-id <id> --query Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress --output json
...