既に suz-lab.com は Route 53 で管理しているのですが、そのサブドメイン
sub.suz-lab.com を別の Hosted Zone で管理できるようにしてみました。
って言っても要は”Route 53″でサブドメインの委任(NSレコード)してるだけですが…

0VMOC1BrD6dDB4DA-FA07C

“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" ] }
                }
            }
        }
    }
}

スタック作成時のパラメータは、こんな感じです。

2015-06-20_10-05-48

スタックが作成し終わると、次のように”sub.suz-lab.com”の”Hosted Zone”が
できていることを確認できます。

2015-06-20_10-28-49

次のように確認すると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タイプの値(最後にドットは不要)とします。

2015-06-20_11-36-09

この状態で再度、普通に名前解決すると、今度は無事、名前解決できました。

$ 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

元記事はこちら

“Route 53″でサブドメインを別の”Hosted Zone”で管理する(サブドメインの委任)