我想获取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",
}
]
答案 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)