来自cli aws ec2 describe-instances的aws ec2实例ip地址

时间:2018-06-05 19:01:12

标签: amazon-web-services amazon-ec2

我想获取ec2实例的所有IP地址。我正在查看CLI aws ec2 describe-instances,我发现我们有两个地方有IP地址。我知道每个接口都可以拥有自己的公共IP /私有IP,并且可以属于不同的子网,因此属于网络接口下的字段。但是我不清楚为什么我们在实例中有IP地址(公共/私有)和子网。不希望该数据成为其中一个界面的一部分。这有什么意思吗?为什么这个重复?```

e.g。 aws ec2 describe-instances

"Instances": [
    {
    *** I have IP address and subnet here ***
    "PrivateIpAddress": "10.0.0.19",
    "SubnetId": "subnet-12345678",
    "NetworkInterfaces": [
    ***I also have IP address, subnetId for each interface here**
    "PrivateIpAddress": "10.0.0.19",
    "SubnetId": "subnet-12345678",
    }
]

2 个答案:

答案 0 :(得分:1)

您必须使用某种编程语言进行迭代,因为NetworkInterfaces是一个列表,因此是PrivateIpAddresses。

https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html

JQ会为您提供所需的输出。

aws ec2 describe-instances  --instance-id i-1234567890qwertyu --output json | jq .Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress -r
10.0.1.247
10.0.1.246

答案 1 :(得分:0)

私有IP地址是分配给实例的主IP。下面是Python中的代码片段:

ec2 = boto3.resource('ec2')

filters = [{
    <if-any>
     }]

instances = ec2.instances.filter(Filters=filters)

for instance in instances:
    print(instance.private_ip_address)