web-dev-qa-db-ja.com

CloudformationでプライベートIPのroute53レコードを作成する方法

AWSに、ファイアウォールルールやS3マッピングなどを含むEC2インスタンスを作成するcloudformationスクリプトがあります。また、インスタンスのパブリックIP用にroute53にDNSレコードを作成します。これはうまく機能します。

次に、ホストの内部IPのDNSに別のレコードを作成する必要があります(内部使用のために、他のインスタンスがパブリックIPを経由せずにこのインスタンスと通信できるようにします)。

私はこれを行う方法を見つけていません。出来ますか?誰かがクラウドフォーメーションスクリプトの例を持っていますか?

2
Sverre

数日間質問し、テストし、試した後、Redditのナイスガイから解決策に出くわしました。私の問題の完全な解決策は次のとおりです:

    "myInternalIPHostRecord": {
        "Type": "AWS::Route53::RecordSet",
        "Properties": {
            "HostedZoneId": {
                "Ref" : "HostedZoneId"
            },
            "Comment": "Internal DNS name for my instance.",  
            "Name": {
                "Fn::Join": [
                    "",
                    [
                        "internal",
                        ".",
                        {
                            "Ref": "DNSEnvironment"
                        },
                        ".",
                        {
                            "Ref": "HostedZoneName"
                        },
                        "."
                    ]
                ]
            },
            "Type": "A",
            "TTL": "120",
            "ResourceRecords": [
                {
                    "Fn::GetAtt" : [ "MyInstance", "PrivateIp" ]
                }
            ]
        }
    }

私にとっての新しい部分はFn::GetAttを取得するには"PrivateIP"私のインスタンスから、助けを得る前にそれを行う方法が見つかりませんでした。それ以外の点では、これはパブリックIPレコードが作成されたのとまったく同じでした(たとえば、以前に十分に文書化されています ここ :(そして、Fn :: getAttを使用していることがわかりましたが、なぜこれを取得しなかったのかわかりません私自身)。

0
Sverre

可能ですが、この記事で説明されているように、「プライベートホストゾーン」を設定する必要があります 同じドメイン名を使用してウェブサイトの内部バージョンにアクセスする| Amazon AWSサポート 次に、以下のクラウドフォーメーションをあなたのニーズを満たす

"myDNSRecord2" : {
    "Type" : "AWS::Route53::RecordSet",
    "Properties" : {
        "HostedZoneId" : "Z3DG6IL3SJCGPX",
        "Name" : "mysite.example.com.",
        "Type" : "A",
        "TTL" : "900",
        "ResourceRecords" : [{
            "Fn::GetAtt" : [ "MyInstance", "PrivateIp" ]
        }]
    }
}
5

別のCloudformationスクリプトでプライベートホストゾーンを作成し、Route53ゾーンIDを出力します。

そのプライベートゾーンIDをEC2作成Cloudformationスクリプトのパラメーターとして使用します。ゾーンIDをパラメーターとして使用してリソースレコードタイプを作成し、EC2インスタンスのプライベートIPアドレスを参照します。

Publicでも同じことができますが、ELBを使用しない場合は、そのためのENIを作成します。

CFNを使用したリソースレコードの作成

1
strongjz