Amazon EC2 instance hostnames are derived from the IP address that is dynamically assigned to the instance at startup. Although you can change the hostname of a private EC2 Linux instance using the hostname command, if you reboot or stop/start the instance it reverts to using the hostname based on the IP address assigned to the instance.

The hostnamectl command should be used to persist a new hostname between instance stops/starts and reboots of Linux distributions that rely on the systemd System and Service Manager to bootstrap the user space. Because both RHEL 7 and Centos 7 use systemd, perform the steps listed under Resolution to designate a new persistent hostname for these Linux distributions.

1.    Run the hostnamectl command from the shell to update the hostname of your RHEL 7 or Centos 7 Linux instance; replace with the hostname you want the instance to use:

sudo hostnamectl set-hostname --static <persistent_host_name>

2.    Use the vi text editor to update the /etc/cloud/cloud.cfg file on your RHEL 7 or Centos 7 Linux instance. For general information about using the vi editor, run the command "info vi" from the command shell (without quotation marks).

sudo vi /etc/cloud/cloud.cfg

Add the following string to the bottom of the file to ensure that the new hostname is preserved between restarts/reboots:

preserve_hostname: true

Save and exit the vi editor.

3.    Run this command to reboot the instance and associate the new hostname with the instance:

sudo reboot

4.    After you reboot the EC2 instance, run the Linux hostname command without any parameters to verify that the hostname change persisted:


The command should return the new hostname that you specified for in step 1:


Amazon EC2, Linux, hostname, persistent, hosts,, vim, private, RHEL 7, Centos 7

Did this page help you? Yes | No

Back to the AWS Support Knowledge Center

Need help? Visit the AWS Support Center.

Published: 2015-09-03

Updated: 2017-06-08