Commit 3f675b0c authored by Martin Linkhorst's avatar Martin Linkhorst Committed by Nick Jüttner
Browse files

feat: add support for AWS NLBs

parent 32ce01e7
...@@ -31,30 +31,47 @@ import ( ...@@ -31,30 +31,47 @@ import (
) )
const ( const (
elbHostnameSuffix = ".elb.amazonaws.com"
evaluateTargetHealth = true evaluateTargetHealth = true
recordTTL = 300 recordTTL = 300
maxChangeCount = 4000 maxChangeCount = 4000
) )
var ( var (
// see: https://docs.aws.amazon.com/general/latest/gr/rande.html // see: https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region
canonicalHostedZones = map[string]string{ canonicalHostedZones = map[string]string{
"us-east-1" + elbHostnameSuffix: "Z35SXDOTRQ7X7K", // Application Load Balancers and Classic Load Balancers
"us-east-2" + elbHostnameSuffix: "Z3AADJGX6KTTL2", "us-east-2.elb.amazonaws.com": "Z3AADJGX6KTTL2",
"us-west-1" + elbHostnameSuffix: "Z368ELLRRE2KJ0", "us-east-1.elb.amazonaws.com": "Z35SXDOTRQ7X7K",
"us-west-2" + elbHostnameSuffix: "Z1H1FL5HABSF5", "us-west-1.elb.amazonaws.com": "Z368ELLRRE2KJ0",
"ca-central-1" + elbHostnameSuffix: "ZQSVJUPU6J1EY", "us-west-2.elb.amazonaws.com": "Z1H1FL5HABSF5",
"ap-south-1" + elbHostnameSuffix: "ZP97RAFLXTNZK", "ca-central-1.elb.amazonaws.com": "ZQSVJUPU6J1EY",
"ap-northeast-2" + elbHostnameSuffix: "ZWKZPGTI48KDX", "ap-south-1.elb.amazonaws.com": "ZP97RAFLXTNZK",
"ap-southeast-1" + elbHostnameSuffix: "Z1LMS91P8CMLE5", "ap-northeast-2.elb.amazonaws.com": "ZWKZPGTI48KDX",
"ap-southeast-2" + elbHostnameSuffix: "Z1GM3OXH4ZPM65", "ap-northeast-3.elb.amazonaws.com": "Z5LXEXXYW11ES",
"ap-northeast-1" + elbHostnameSuffix: "Z14GRHDCWA56QT", "ap-southeast-1.elb.amazonaws.com": "Z1LMS91P8CMLE5",
"eu-central-1" + elbHostnameSuffix: "Z215JYRZR1TBD5", "ap-southeast-2.elb.amazonaws.com": "Z1GM3OXH4ZPM65",
"eu-west-1" + elbHostnameSuffix: "Z32O12XQLNTSW2", "ap-northeast-1.elb.amazonaws.com": "Z14GRHDCWA56QT",
"eu-west-2" + elbHostnameSuffix: "ZHURV8PSTC4K8", "eu-central-1.elb.amazonaws.com": "Z215JYRZR1TBD5",
"eu-west-3" + elbHostnameSuffix: "Z3Q77PNBQS71R4", "eu-west-1.elb.amazonaws.com": "Z32O12XQLNTSW2",
"sa-east-1" + elbHostnameSuffix: "Z2P70J7HTTTPLU", "eu-west-2.elb.amazonaws.com": "ZHURV8PSTC4K8",
"eu-west-3.elb.amazonaws.com": "Z3Q77PNBQS71R4",
"sa-east-1.elb.amazonaws.com": "Z2P70J7HTTTPLU",
// Network Load Balancers
"elb.us-east-2.amazonaws.com": "ZLMOA37VPKANP",
"elb.us-east-1.amazonaws.com": "Z26RNL4JYFTOTI",
"elb.us-west-1.amazonaws.com": "Z24FKFUX50B4VW",
"elb.us-west-2.amazonaws.com": "Z18D5FSROUN65G",
"elb.ca-central-1.amazonaws.com": "Z2EPGBW3API2WT",
"elb.ap-south-1.amazonaws.com": "ZVDDRBQ08TROA",
"elb.ap-northeast-2.amazonaws.com": "ZIBE1TIR4HY56",
"elb.ap-southeast-1.amazonaws.com": "ZKVM4W9LS7TM",
"elb.ap-southeast-2.amazonaws.com": "ZCT6FZBF4DROD",
"elb.ap-northeast-1.amazonaws.com": "Z31USIVHYNEOWT",
"elb.eu-central-1.amazonaws.com": "Z3F0SRJ5LGBH90",
"elb.eu-west-1.amazonaws.com": "Z2IFOLAFXWLO4F",
"elb.eu-west-2.amazonaws.com": "ZD4D7Y8KGAS4G",
"elb.eu-west-3.amazonaws.com": "Z1CMS0P5QUZ6D5",
"elb.sa-east-1.amazonaws.com": "ZTK26PT1VY4CU",
} }
) )
......
...@@ -720,13 +720,15 @@ func TestAWSCanonicalHostedZone(t *testing.T) { ...@@ -720,13 +720,15 @@ func TestAWSCanonicalHostedZone(t *testing.T) {
hostname string hostname string
expected string expected string
}{ }{
{"foo.us-east-1.elb.amazonaws.com", "Z35SXDOTRQ7X7K"}, // Application Load Balancers and Classic Load Balancers
{"foo.us-east-2.elb.amazonaws.com", "Z3AADJGX6KTTL2"}, {"foo.us-east-2.elb.amazonaws.com", "Z3AADJGX6KTTL2"},
{"foo.us-east-1.elb.amazonaws.com", "Z35SXDOTRQ7X7K"},
{"foo.us-west-1.elb.amazonaws.com", "Z368ELLRRE2KJ0"}, {"foo.us-west-1.elb.amazonaws.com", "Z368ELLRRE2KJ0"},
{"foo.us-west-2.elb.amazonaws.com", "Z1H1FL5HABSF5"}, {"foo.us-west-2.elb.amazonaws.com", "Z1H1FL5HABSF5"},
{"foo.ca-central-1.elb.amazonaws.com", "ZQSVJUPU6J1EY"}, {"foo.ca-central-1.elb.amazonaws.com", "ZQSVJUPU6J1EY"},
{"foo.ap-south-1.elb.amazonaws.com", "ZP97RAFLXTNZK"}, {"foo.ap-south-1.elb.amazonaws.com", "ZP97RAFLXTNZK"},
{"foo.ap-northeast-2.elb.amazonaws.com", "ZWKZPGTI48KDX"}, {"foo.ap-northeast-2.elb.amazonaws.com", "ZWKZPGTI48KDX"},
{"foo.ap-northeast-3.elb.amazonaws.com", "Z5LXEXXYW11ES"},
{"foo.ap-southeast-1.elb.amazonaws.com", "Z1LMS91P8CMLE5"}, {"foo.ap-southeast-1.elb.amazonaws.com", "Z1LMS91P8CMLE5"},
{"foo.ap-southeast-2.elb.amazonaws.com", "Z1GM3OXH4ZPM65"}, {"foo.ap-southeast-2.elb.amazonaws.com", "Z1GM3OXH4ZPM65"},
{"foo.ap-northeast-1.elb.amazonaws.com", "Z14GRHDCWA56QT"}, {"foo.ap-northeast-1.elb.amazonaws.com", "Z14GRHDCWA56QT"},
...@@ -735,6 +737,23 @@ func TestAWSCanonicalHostedZone(t *testing.T) { ...@@ -735,6 +737,23 @@ func TestAWSCanonicalHostedZone(t *testing.T) {
{"foo.eu-west-2.elb.amazonaws.com", "ZHURV8PSTC4K8"}, {"foo.eu-west-2.elb.amazonaws.com", "ZHURV8PSTC4K8"},
{"foo.eu-west-3.elb.amazonaws.com", "Z3Q77PNBQS71R4"}, {"foo.eu-west-3.elb.amazonaws.com", "Z3Q77PNBQS71R4"},
{"foo.sa-east-1.elb.amazonaws.com", "Z2P70J7HTTTPLU"}, {"foo.sa-east-1.elb.amazonaws.com", "Z2P70J7HTTTPLU"},
// Network Load Balancers
{"foo.elb.us-east-2.amazonaws.com", "ZLMOA37VPKANP"},
{"foo.elb.us-east-1.amazonaws.com", "Z26RNL4JYFTOTI"},
{"foo.elb.us-west-1.amazonaws.com", "Z24FKFUX50B4VW"},
{"foo.elb.us-west-2.amazonaws.com", "Z18D5FSROUN65G"},
{"foo.elb.ca-central-1.amazonaws.com", "Z2EPGBW3API2WT"},
{"foo.elb.ap-south-1.amazonaws.com", "ZVDDRBQ08TROA"},
{"foo.elb.ap-northeast-2.amazonaws.com", "ZIBE1TIR4HY56"},
{"foo.elb.ap-southeast-1.amazonaws.com", "ZKVM4W9LS7TM"},
{"foo.elb.ap-southeast-2.amazonaws.com", "ZCT6FZBF4DROD"},
{"foo.elb.ap-northeast-1.amazonaws.com", "Z31USIVHYNEOWT"},
{"foo.elb.eu-central-1.amazonaws.com", "Z3F0SRJ5LGBH90"},
{"foo.elb.eu-west-1.amazonaws.com", "Z2IFOLAFXWLO4F"},
{"foo.elb.eu-west-2.amazonaws.com", "ZD4D7Y8KGAS4G"},
{"foo.elb.eu-west-3.amazonaws.com", "Z1CMS0P5QUZ6D5"},
{"foo.elb.sa-east-1.amazonaws.com", "ZTK26PT1VY4CU"},
// No Load Balancer
{"foo.example.org", ""}, {"foo.example.org", ""},
} { } {
zone := canonicalHostedZone(tc.hostname) zone := canonicalHostedZone(tc.hostname)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment