DNS Route53 Support

UFO can create a “pretty” route53 record and value to the ELB DNS name. Example:


Ufo.configure do |config|
  config.dns.domain = "domain.com" # only recommended option to set

When the dns.domain is configured, UFO will create a conventional Route53 record and point it to the ELB DNS name.

demo-web-dev.domain.com -> demo-we-Elb-7DSB8ODFY8QP-1678773019.us-west-2.elb.amazonaws.com

This is the recommended way to configure managed DNS by UFO. You can then manually CNAME your domain to the conventional DNS record. Example:

www.domain.com -> demo-web-dev.domain.com -> demo-we-Elb-7DSB8ODFY8QP-1678773019.us-west-2.elb.amazonaws.com

This allows you complete control of the user-facing DNS record.

IMPORTANT: The route53 host zone must already exist. You can create route53 hosted zone with the AWS CLI like so:

aws route53 create-hosted-zone --name mydomain.com --caller-reference $(date +%s)
aws route53 list-hosted-zones


The table below covers each setting. Each option is configured in .ufo/config.rb with config.OPTION. The config. portion is not shown for conciseness. IE: logger.level vs config.logger.level.

Name Default Description
dns.domain nil This is the recommended option to set. The dns.hosted_zone_name and dns.name options conventionally uses this. This setting alone is enough to activate ufo adding the route53 DNS record.
dns.hosted_zone_id nil The hosted zone id. Takes precedence over dns.hosted_zone_name. This is useful for split-horizon DNS.
dns.hosted_zone_name nil The hosted zone name. Setting dns.domain is preferred over dns.hosted_zone_name.
dns.name nil The domain name. IE: my.domain.com. However, setting dns.domain is preferred over dns.name, so the name can conventionally set to something like demo-web-dev.domain.com. You then manually CNAME your pretty domain to it. IE: www.domain.com -> demo-web-dev.domain.com. This gives you more control over the user-friendly DNS.
dns.ttl 60 DNS TTL
dns.type CNAME DNS Type

See Full Config Reference