既に suz-lab.com は Route 53 で管理しているのですが、そのサブドメイン
sub.suz-lab.com を別の Hosted Zone で管理できるようにしてみました。
って言っても要は”Route 53″でサブドメインの委任(NSレコード)してるだけですが…
“sub.suz-lab.com”の”Hosted Zone”は下記のテンプレートを使って
CloudFormationで作成しました。
(ついでにELB作ってALIASでレコード登録もしています)
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "ProjectName": { "Type": "String", "Default": "Cloudpack" }, "PublicHostedZoneName": { "Type": "String" }, "CommonSecurityGroup": { "Type": "AWS::EC2::SecurityGroup::Id" }, "Public1Subnet": { "Type": "AWS::EC2::Subnet::Id" }, "Public2Subnet": { "Type": "AWS::EC2::Subnet::Id" } }, "Resources": { "WwwLoadBalancer": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "LoadBalancerName": { "Fn::Join" : [ "", [ { "Ref": "ProjectName" }, "Www" ] ] }, "CrossZone": "true", "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ], "SecurityGroups": [ { "Ref": "CommonSecurityGroup" } ], "Subnets": [ { "Ref": "Public1Subnet" }, { "Ref": "Public2Subnet" } ], "Tags": [ { "Key": "Name", "Value": { "Fn::Join" : [ "", [ { "Ref": "ProjectName" }, "Www" ] ] } } ] } }, "PublicHostedZone": { "Type": "AWS::Route53::HostedZone", "Properties": { "Name": { "Ref": "PublicHostedZoneName" }, "HostedZoneTags": [ { "Key": "Name", "Value": { "Fn::Join" : [ "", [ { "Ref": "ProjectName" }, "Public" ] ] } } ] } }, "WwwPublicRecordSet": { "Type": "AWS::Route53::RecordSet", "Properties": { "HostedZoneId": { "Ref": "PublicHostedZone" }, "Name": { "Fn::Join" : [ "", [ "www.", { "Ref": "PublicHostedZoneName" }, "." ] ] }, "Type": "A", "AliasTarget" : { "HostedZoneId": { "Fn::GetAtt": [ "WwwLoadBalancer", "CanonicalHostedZoneNameID" ] }, "DNSName": { "Fn::GetAtt": [ "WwwLoadBalancer", "CanonicalHostedZoneName" ] } } } } } }
スタック作成時のパラメータは、こんな感じです。
スタックが作成し終わると、次のように”sub.suz-lab.com”の”Hosted Zone”が
できていることを確認できます。
次のように確認するとELB(www.sub.suz-lab.com)が名前解決できています。
(上記のNSを利用して名前解決)
$ nslookup www.sub.suz-lab.com ns-1329.awsdns-38.org Server: ns-1329.awsdns-38.org Address: 205.251.197.49#53 Name: www.sub.suz-lab.com Address: 54.66.227.43
当然、まだサブドメインの委任をしてないので、次のように、
普通に名前解決はできません。
$ nslookup www.sub.suz-lab.com ;; Got SERVFAIL reply from xxx.xxx.xxx.xxx, trying next server Server: xxx.xxx.xxx.xxx Address: xxx.xxx.xxx.xxx#53 ** server can't find www.sub.suz-lab.com: NXDOMAIN
ということで下記のように”suz-lab.com”の”Hosted Zone”で”sub.suz-lab.com”を
上記の”Hosted Zone”に委任するようにします。
具体的には、”sub.suz-lab.com”のNSタイプのレコードを登録します。
値は、上記の”Hosted Zone”のNSタイプの値(最後にドットは不要)とします。
この状態で再度、普通に名前解決すると、今度は無事、名前解決できました。
$ nslookup www.sub.suz-lab.com Server: xxx.xxx.xxx.xxx Address: xxx.xxx.xxx.xxx#53 Non-authoritative answer: Name: www.sub.suz-lab.com Address: 54.66.227.43