route53

源代码

route53 允许服务来自 AWS route53 的区域数据。

描述

route53 插件对于从 AWS route53 中的资源记录集服务区域非常有用。该插件支持所有 Amazon Route 53 记录(https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html)。无论 CoreDNS 是在 AWS 还是其他区域部署,都可以使用 route53 插件。

语法

route53 [ZONE:HOSTED_ZONE_ID...] {
    aws_access_key [AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY] # Deprecated, uses other authentication methods instead.
    aws_endpoint ENDPOINT
    credentials PROFILE [FILENAME]
    fallthrough [ZONES...]
    refresh DURATION
}
  • ZONE 需要访问的域的名称。当有多个区域重叠域(专用对公共托管区域)时,CoreDNS 会按此处所示的顺序进行查找。因此,对于不存在的资源记录,SOA 响应将来自最右边的区域。

  • HOSTED_ZONE_ID 包含要访问的资源记录集的托管区域的 ID。

  • 在查询 AWS 时,AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 是要使用的 AWS 访问密钥 ID 和秘密访问密钥(可选)。如果未提供,CoreDNS 将尝试与 AWS CLI 使用相同的方法访问 AWS 凭证 - 环境变量,共享凭证文件(并且如果设置了 AWS_SDK_LOAD_CONFIG 环境变量,则可以选择共享配置文件),最后是 EC2 实例角色。请注意,aws_access_key 的用法已被弃用,且可能在未来版本中被删除。相反,用户可以使用其他方法传递凭证,例如分别使用环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

  • aws_endpoint 可用于控制在查询 AWS 时使用的端点(可选)。ENDPOINT 是要使用的端点的 URL。如果未提供,则会执行默认的 AWS 端点解析。

  • credentials 用于覆盖给定区域的共享凭证文件 FILENAMEPROFILE 名称。PROFILE 是 AWS 帐户配置文件名称。默认为 defaultFILENAME 是 AWS 共享凭证的文件名,默认为 ~/.aws/credentials。默认情况下,CoreDNS 将只加载共享凭证文件,而不会加载共享配置文件(~/.aws/config)。设置 AWS_SDK_LOAD_CONFIG 环境变量为真值以启用加载 ~/.aws/config(例如,如果要提供已假定的 IAM 角色配置)。如果通过 aws_access_key 设置静态密钥,则将被忽略。

  • fallthrough 如果区域匹配且无法生成任何记录,则将请求传递到下一个插件。如果省略了 ZONES,那么将在插件具有权威的所有区域发生故障转移。如果列出了特定区域(例如 in-addr.arpaip6.arpa),那么只有对这些区域的查询才会发生故障转移。

  • refresh 可用于控制从 Route 53 中检索记录之间的时间间隔。它需要一个持续时间字符串作为指定更新周期之间持续时间的一个参数。每个更新周期都可能导致许多 AWS API 调用,具体取决于有多少域名使用此插件以及每个域名中有多少条记录。调整更新频率可能有助于减少 AWS 强加的 API 速率限制。

  • DURATION 持续时间字符串。默认为 1m。如果没有指定单位,则假定为秒。

示例

使用隐式 AWS 凭证启用 route53,并通过 10.0.0.1 解析 CNAME

example.org {
	route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7
}

. {
    forward . 10.0.0.1
}

使用显式 AWS 凭证启用 route53

example.org {
    route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7 {
      aws_access_key AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY # Deprecated, uses other authentication methods instead.
    }
}

使用显式 AWS 端点启用 route53

example.org {
    route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7 {
      aws_endpoint https://test.us-west-2.amazonaws.com
    }
}

使用直通启用 route53

. {
    route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7 example.gov.:Z654321543245 {
      fallthrough example.gov.
    }
}

使用具有相同域名的多个托管区域启用 route53

example.org {
    route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7 example.org.:Z93A52145678156
}

启用 route53,并每 3 分钟刷新记录

example.org {
    route53 example.org.:Z1Z2Z3Z4DZ5Z6Z7 {
      refresh 3m
    }
}

身份验证

Route53 插件使用 AWS Go SDK 进行身份验证,其中有一系列接受的配置方法。请注意,Corefile 中 aws_access_key 的使用已被弃用,并且可能会在未来版本中删除。相反,用户可以使用其他方法传递凭证,例如,分别使用环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY