---
layout: page
title: "route53"
description: "Automatically update your AWS Route53 DNS records."
date: 2018-02-10 20:08
sidebar: true
comments: false
sharing: true
footer: true
logo: route53.png
ha_category: Network
ha_release: "0.81"
---

With the `route53` component can you keep your AWS Route53 DNS records up to date.

The component will run every hour, but can also be started manually by using the service `route53.update_records` under services.

Please note that this platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address.

## {% linkable_title 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": "*"
        }
    ]
}
```

4. 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.

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

## {% linkable_title Configuration %}

To use the component in your installation, add the following to your `configuration.yaml` file:

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

{% configuration route53 %}
aws_access_key_id:
  description: The AWS access key ID for the account that has IAM access to the domain.
  required: true
  type: string
aws_secret_access_key:
  description: The AWS secret access key for the account that has IAM access to the domain.
  required: true
  type: string
zone:
  description: The AWS zone ID for the domain in Route53.
  required: true
  type: string
domain:
  description: The domain name for the domain in Route53.
  required: true
  type: string
records:
  description: A list of records you want to update.
  required: true
  type: list
{% endconfiguration %}
