Ipv6
使用 CloudFormation,我無法獲得用於 ELB 的 AAAA 記錄
我有以下兩個 CloudFormation 資源:
"TestELB" { ... }, "TestRecordSetGroup": { "Type": "AWS::Route53::RecordSetGroup", "Properties": { "HostedZoneName": "example.com.", "RecordSets": [ { "Name": "subdomain.example.com.", "Type": "A", "AliasTarget": { "HostedZoneId": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneNameID"]}, "DNSName": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneName"]} } }, { "Name": "subdomain.example.com.", "Type": "AAAA", "AliasTarget": { "HostedZoneId": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneNameID"]}, "DNSName": {"Fn::Join": [".", ["ipv6", {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneName"]}]]} } } ] } }
堆棧更新後,我看到我的區域中列出的兩條記錄都帶有預期的別名值。經 dig 驗證,A 記錄有效:
$ dig A subdomain.example.com ... ;; QUESTION SECTION: ;subdomain.example.com. IN A ;; ANSWER SECTION: subdomain.example.com. 59 IN A 11.22.33.44 ;; Query time: 38 msec ...
但是 AAAA 記錄不起作用:
$ dig AAAA subdomain.example.com ... ;; QUESTION SECTION: ;subdomain.example.com. IN AAAA ;; AUTHORITY SECTION: example.com. 899 IN SOA ns-1234.awsdns-11.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 ;; Query time: 54 msec ...
我認為這與 Fn::Join 被用來添加
ipv6.
到 ELB 的 DNS 名稱的開頭有關。如果我更改 A 記錄,使其使用 Fn:Join 附加dualstack.
到 DNS 名稱之前,它也會以同樣的方式失敗。Fn::Join 是否以正確的方式添加
ipv6.
或添加dualstack.
到 DNS 名稱的開頭?
原來我太聰明了。即使 CanonicalHostedZoneName 中的輸出不包含
ipv6.
ordualstack.
,*在這種情況下您實際上也不需要它。*通過 AWS 文獻中沒有很好地記錄的一些魔法,記錄集可以了解別名是在 A 上下文還是 AAAA 上下文中,並相應地做正確的事情。完整的工作記錄集組是:"TestRecordSetGroup": { "Type": "AWS::Route53::RecordSetGroup", "Properties": { "HostedZoneName": "example.com.", "RecordSets": [ { "Name": "subdomain.example.com.", "Type": "A", "AliasTarget": { "HostedZoneId": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneNameID"]}, "DNSName": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneName"]} } }, { "Name": "subdomain.example.com.", "Type": "AAAA", "AliasTarget": { "HostedZoneId": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneNameID"]}, "DNSName": {"Fn::GetAtt": ["TestELB", "CanonicalHostedZoneName"]} } } ] } }