AWS provided DNS names are technically descriptive, but generally not very user friendly. For example, an EC2 instance might look like:

Not something you want to share with your users or expect them to remember. Load balancers are bad too:

Even worse, you might want to change out your load balancer or EC2 instance, and it gets an entirely new DNS name. So how can we set this up in a way that you can assign a "pretty" domain name to your resource(s)?

If you're just using EC2 one way to solve this is to assign an Elastic IP Address, or EIP, to your instance. An EIP is a reserved, global IP address from AWS that can be associated with an EC2 instance. You allocate an EIP and associate it with an EC2 instance. If you want to move your service to another EC2 instance you can move the EIP to the new instance. can create an A record in most (sub)domains pointing to the EIP. 

But what about load balancers? Or if you want to be able to manage a number of resources and need to be able to do it programmatically?

In this case you can request a sub-domain from Cloud Services. We have been delegated the domain and can further delegate a domain to be managed in your AWS account.

Let's use an example to illustrate how this might work:

1) You have an AWS account for your service and request a sub-domain from Cloud Services.

2) Cloud Services delegates to your AWS account. You can now manage this sub-domain in the AWS DNS Service, Route 53

3) You create an Elastic Load Balancer (ELB) in AWS and assign to the resource in Route 53.

4) You email and have them create a CNAME record for pointing to

At this point your users can go to to access your resource. But you decide that you'd like to make some changes that necessitate a migration to a new load balancer. With this configuration you can simply assign to your new load balancer. You don't need to coordinate the change with hostmaster nor worry about contacting someone off-hours if you decide you need to roll back.

Article number: 
Last updated: 
July 13, 2021