diff --git a/source/_components/route53.markdown b/source/_components/route53.markdown new file mode 100644 index 00000000000..a00e5e708d0 --- /dev/null +++ b/source/_components/route53.markdown @@ -0,0 +1,103 @@ +--- +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 %} diff --git a/source/images/supported_brands/route53.png b/source/images/supported_brands/route53.png new file mode 100644 index 00000000000..07f3e8018db Binary files /dev/null and b/source/images/supported_brands/route53.png differ