[plugin/route53]: Support batch mode operation. (#2050)

* [plugin/route53]: Support batch mode operation.

Cache all Route53 records internally using `ListResourceRecordPagesWithContext`
and serve them from memory.

Bonus features:

  * Support additional r53 record types (`CNAME`, `SOA`, etc)
  * Support `upstream` option (#2099 filed to support argument optionality)

Signed-off-by: Dmitry Ilyevskiy <dmitry.ilyevskiy@getcruise.com>
Signed-off-by: Dmitry Ilyevskiy <ilyevsky@gmail.com>
This commit is contained in:
dilyevsky
2018-09-17 11:19:07 -07:00
committed by GitHub
parent 4ac06a342b
commit 153bd5f767
6 changed files with 366 additions and 151 deletions

View File

@@ -7,13 +7,15 @@
## Description
The route53 plugin is useful for serving zones from resource record sets in AWS route53. This plugin
only supports A and AAAA records. The route53 plugin can be used when coredns is deployed on AWS.
supports all Amazon Route 53 records (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html).
The route53 plugin can be used when coredns is deployed on AWS or elsewhere.
## Syntax
~~~ txt
route53 [ZONE:HOSTED_ZONE_ID...] {
[aws_access_key AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY]
upstream [ADDRESS...]
}
~~~
@@ -23,18 +25,23 @@ route53 [ZONE:HOSTED_ZONE_ID...] {
to be used when query AWS (optional). If they are not provided, then coredns tries to access
AWS credentials the same way as AWS CLI, e.g., environmental variables, AWS credentials file,
instance profile credentials, etc.
* `upstream` [**ADDRESS**...] specifies upstream resolver(s) used for resolving services that point
to external hosts (eg. used to resolve CNAMEs). If no **ADDRESS** is given, CoreDNS will resolve
against itself. **ADDRESS** can be an IP, an IP:port or a path to a file structured like
resolv.conf (**NB**: Currently a bug (#2099) is preventing the use of self-resolver).
## Examples
Enable route53, with implicit aws credentials:
Enable route53 with implicit aws credentials and an upstream:
~~~ txt
. {
route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7
upstream 10.0.0.1
}
~~~
Enable route53, with explicit aws credentials:
Enable route53 with explicit aws credentials:
~~~ txt
. {