This package contains a DNS provider module for Caddy. It can be used to manage DNS records in Route53 Hosted zones.
dns.providers.route53
See the associated README in the libdns package for important information about credentials and an IAM policy example.
To compile this Caddy module, follow the steps describe at the Caddy Build from Source instructions and import the github.com/caddy-dns/route53
plugin
This module supports all the credential configuration methods described in the AWS Developer Guide, such as Environment Variables
, Shared configuration files
, the AWS Credentials file
located in .aws/credentials
, and Static Credentials
. You may also pass in static credentials directly (or via caddy's configuration).
To use this module for the ACME DNS challenge, configure the ACME issuer in your Caddy JSON like so:
{
"module": "acme",
"challenges": {
"dns": {
"provider": {
"name": "route53",
"max_retries": 10, // optional
"profile": "real-profile", // optional
"region": "us-east-1", // optional
"access_key_id": "AKI...", // optional
"secret_access_key": "wJa...", // optional
"session_token": "TOKEN...", // optional
"max_wait_dur": 60, // propagation wait duration (optional)
"wait_for_propagation": false, // wait for records to propagate (optional)
"hosted_zone_id": "ZABCD1EFGHIL" // AWS hosted zone ID to update (optional)
}
}
}
}
or with the Caddyfile:
tls {
dns route53 {
max_retries 10 // optional
profile "real-profile" // optional
access_key_id "AKI..." // optional
secret_access_key "wJa..." // optional
session_token "TOKEN..." // optional
region "us-east-1" // optional
max_wait_dur 60, // propagation wait duration (optional)
wait_for_propagation false // wait for records to propagate (optional)
hosted_zone_id ZABCD1EFGHIL // AWS hosted zone ID to update (optional)
}
}
The following IAM policy is a minimal working example to give libdns
permissions to manage DNS records:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"route53:ListResourceRecordSets",
"route53:GetChange",
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/ZABCD1EFGHIL",
"arn:aws:route53:::change/*"
]
},
{
"Sid": "",
"Effect": "Allow",
"Action": ["route53:ListHostedZonesByName", "route53:ListHostedZones"],
"Resource": "*"
}
]
}
For more information, refer to libdns/route53.