Siva
Siva

Reputation: 302

Retrieve another EC2 instance's public IP address

We have a product running on AWS and it works on master-slave model. One instance will be acting as a Master/Server and multiple slave instances talking to them.

To run some automated scripts, I need to connect to the Master Server and from there retrieve all other Slave instances IP address.

The catch here is that Master Server Instance has the list of all the Slave Instance's Private IP address. But I need to get their equivalent public IP address.(All master and slave instances do have public IP address)

Question: Given that I have the private IP address of an Instance, is there a way to retrieve the corresponding public IP address from within the Master Server Instance

P.S. I do have these commands to retrieve the local instances IP address but looking for remote instance version

http://instance-data/latest/meta-data/local-ipv4

http://instance-data/latest/meta-data/public-ipv4

Upvotes: 1

Views: 336

Answers (2)

helloV
helloV

Reputation: 52375

Use describe-instances with filter private-ip-address

    aws ec2 describe-instances --filters "Name=private-ip-address,Values=10.1.1.100,10.10.0.101"
        --query "Reservations[].Instances[][PrivateIpAddress,PublicIpAddress]" --output text

Output

10.10.0.101 52.123.123.215
10.1.1.100  54.123.123.49

Upvotes: 1

andyhassall
andyhassall

Reputation: 1106

One option is to grant the master EC2 privileges via an instance role to ec2:DescribeInstances, and call it with the private-ip-address filter.

From the results the publicIp field can be read to find the slave public IPv4 address.

Since ec2:DescribeInstances doesn't support resource-level permissions you should consider carefully whether this (i.e. the ability to describe properties of all your EC2 instances) is an acceptable level of privileges for the master EC2 to have. Finer-grained permission checking could be implemented in a Lambda function.

Upvotes: 2

Related Questions