Get public dns name of a ec2 instance using ec2 command line tools in bash

ec2 get public ip from instance
aws ec2 describe-instances
bash aws
aws ec2 describe-instances --query tags
aws ec2 describe-instances security group
aws cli get instance id
ec2 public dns
how to get dns name from aws

I have name of the a ec2 instance and want to do ssh to it. How can I figure out the 'Public DNS' of the ec2 instance using the ec2 instance name.

I want to do it using bash.

aws ec2 describe-instances --instance-ids i-12abc34 --query 'Reservations[].Instances[].PublicDnsName'

Where i-12abc34 is your instance id

Connecting to your Linux instance from Windows using Windows , WSL is a free download and enables you to run native Linux command line tools The Amazon EC2 console provides the SSH command for connecting to the Linux to find the private key, the user name for your instance, and the DNS name or (Public DNS) To connect using your instance's public DNS name, enter the  If you're ever in need of using an Amazon AWS's public DNS name from within a script running on an EC2 instance, here's a quick way to get it using PowerShell. This technique uses the Instance Metadata that every EC2 instance has available.

Using the EC2 API tools:

# Region is only needed if not in us-east-1
$ ec2-describe-instances --region <region> <instance id> 

Using the unified AWS CLI tool:

$ aws --region <region> ec2 describe-instances --instance-ids <instance id≥

I prefer the unified tool as it offers comprehensive and consistent data.

Connect using EC2 Instance Connect, To connect using the EC2 Instance Connect CLI, your instance does not need to have a You can check for an SSH client by typing ssh at the command line. AMI that you used to launch your instance, and the instance's public DNS name. Using EC2 CLI, you should use command ec2-describe-instances instance_id. Again, the instance has to be running and the public DNS does change after stop/start. Again, the instance has to be running and the public DNS does change after stop/start.

If you install the cloud-utils tool as described in this answer it's much more straight forward.

https://stackoverflow.com/a/10600619/28672

ec2-metadata --public-ipv4
> public-ipv4: 54.200.4.52

Get the public dns name of an ec2 instance using ec2 command-line , Get public dns name of ec2 instance using ec2 command line tools in bash I have an ec2 instance name and you want to make ssh. How can I determine Specify the private key that corresponds to the public key, the default user name for the AMI that you used to launch your instance, and the instance's public DNS name. $ ssh -i my_rsa_key ec2-user @ ec2-198-51-100-1.compute-1.amazonaws.com

It depends on what you mean by "figure out". If you mean figuring out yourself, you cannot. The public DNS name has nothing to do with the ec2 instance name. The public DNS name is composed of public IP address, region/availability zone, type of service, aws domain name, etc. For example, ec2-xx-xxx-x-xx.us-west-2.compute.amazonaws.com. Because the public IP address is changed every time you stop and start your instance, unless you use an elastic IP address, your public DNS name will be changed.

If you mean figure out by using AWS API or CLI tool, you can. Using EC2 CLI, you should use command ec2-describe-instances instance_id. Again, the instance has to be running and the public DNS does change after stop/start.

Running commands on your Linux instance at launch, When you launch an instance in Amazon EC2, you have the option of as a file (​this is useful for launching instances using the command line tools), The following examples assume that your instance has a public DNS name that is reachable from the Internet. #!/bin/bash yum update -y amazon-linux-extras install -y  $ ec2-metadata -i instance-id: i-1234567890abcdef0 Or, on Ubuntu and some other linux flavours, ec2metadata --instance-id (This command may not be installed by default on ubuntu, but you can add it with sudo apt-get install cloud-utils) As its name suggests, you can use the command to get other useful metadata too.

You can query the instance metadata service.

Using curl:

curl -s http://169.254.169.254/latest/meta-data/public-hostname

Using wget:

wget -qO - http://169.254.169.254/latest/meta-data/public-hostname

If brave, actual bash:

exec 3<> /dev/tcp/169.254.169.254/80
echo -e "GET /latest/meta-data/public-hostname HTTP/1.0\r\n\r\n" >&3
cat <&3

(The last one leaves the connection open for me, so the cat gets stuck. The headers are also present in the output)

(This is from the instance itself and need access to the instnace - it is not the instance name-related version. There are enough of those answers here)

Getting Public IP address of EC2 instance from outside using AWS-cli, aws ec2 describe-instances --instance-ids i-b78a096f | grep PublicIpAddress | awk -F #!/usr/bin/env bash set -e HOME_DIR=/home/$(whoami) #​Dependencies sudo apt-get name on command line because AWS cli reads region information from For example, you can open VPC Designer in this tool and see what all  $ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId" [ "i-05e998023d9c69f9a" ] The following command lists any of your instances that have the tag Name=MyInstance.

Aws cli query, The AWS Command Line Interface (CLI) is a unified tool to manage AWS services. Tutorial on DynamoDB Using Bash and the AWS CLI Tools to Interact With a Music Each hour, the AWS billing system looks at all EC2 instances that have been Assumptions : We use a query to only output the Public DNSNAME . (Public DNS) To connect using your instance's public DNS name, enter the following command. sudo ssh -i /path/my-key-pair .pem my-instance-user-name @ my-instance-public-dns-name (IPv6) Alternatively, if your instance has an IPv6 address, you can connect to the instance using its IPv6 address.

How do I get ec2 Linux instance info while logged-in on the , AMI Private DNS Public DNS Tags. I'm using I'm assuming you want to do this from the bash shell rather than with the boto python library or similar. Simple Command-Line Access to Amazon EC2 and Amazon S3 Some instance types come with this tool preinstalled, in others you have to download and install the tool. Using Amazon EC2 with the AWS CLI You can access the features of Amazon Elastic Compute Cloud (Amazon EC2) using the AWS Command Line Interface (AWS CLI). To list the AWS CLI commands for Amazon EC2, use the following command.

(Advanced) Deployment on Amazon EC2 - Documentation, You can use either with your Plesk installed on an Amazon EC2 VPS. For example, enable the Auto-assign Public IP option in the instance details settings. Then, run this command in the command line or or powershell: We recommend that you use a domain name that you control, or one controlled by the Amazon  For example, to set the system nickname to webserver, run the following command. [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'. Open the /etc/bashrc (Red Hat) or /etc/bash.bashrc (Debian/Ubuntu) file in your favorite text editor (such as vim or nano ).

Comments
  • What do you mean by "I have name of ec2 instance"?. In ec2, name is nothing but a tag assigned to instance.
  • By name I meant the instance ID
  • You can further restric the ouput to Public DNS name only using the --query parameter, like this --query "Reservations[].Instances[].PublicDnsName"