AWS Route53

With the route53 integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] can you keep your AWS Route53 DNS records up to date.

The integration will run every hour, but can also be started manually by using the route53.update_records action.

Please note that this platform uses the API from ipify.org to set the public IP address.

Setup

You will need to configure your AWS Account with a suitable IAM policy and API keys for this to function.

If you are familiar with this process, you can skip the next section and head directly to the configuration section.

On the AWS side, you need to do the following;

  1. Create a suitable zone for a domain that you own and manage in Route53, the domain home.yourdomain.com is used as an example.

  2. Once created, write down the Hosted Zone ID value for the domain. This is needed for the plugin and IAM configuration.

  3. Create an IAM Policy that provides update and query access to this domain explicitly and has no other permissions to the AWS account.

Here is an IAM Policy sample, don’t forget to update your Zone ID on the Resource line.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "route53:GetHostedZone",
                "route53:ChangeResourceRecordSets",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "arn:aws:route53:::hostedzone/YOURZONEIDGOESHERE"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "route53:TestDNSAnswer",
            "Resource": "*"
        }
    ]
}
  1. Once this has been done, create a new user called homeassistant and add the IAM policy to the user, allowing it to manage this DNS resource.

  2. Under the security credentials tab for the homeassistant user, create a set of access keys for placement in the integration definition YAML.

Configuration

To use the integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] in your installation, add the following to your configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file. After changing the configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file, restart Home Assistant to apply the changes.

# Example configuration.yaml entry
route53:
  aws_access_key_id: ABC123
  aws_secret_access_key: DEF456
  zone: ZONEID678
  domain: yourdomain.com
  records:
    - vpn
    - hassio
    - home

Configuration Variables

aws_access_key_id string Required

The AWS access key ID for the account that has IAM access to the domain.

aws_secret_access_key string Required

The AWS secret access key for the account that has IAM access to the domain.

zone string Required

The AWS zone ID for the domain in Route53.

domain string Required

The domain name for the domain in Route53.

records list Required

A list of records you want to update. Use . to update the default record ie. yourdomain.com.

ttl integer (Optional, default: 300)

The TTL value for the DNS records.

Actions

Action route53.update_records

Use this action to manually trigger an update of the DNS records.