Como criar um registro route53 do IP privado em Cloudformation

1

Eu tenho um script cloudformation na AWS que cria uma instância do EC2, com algumas regras de firewall, mapeamentos S3 e outras coisas ... e eu crio um registro DNS em route53 para o ip público da instância, isso funciona bem.

Agora preciso criar outro registro no DNS do ip interno do host (para uso interno, para que outras instâncias possam falar com essa instância sem passar pelo ip público).

Eu não encontrei uma maneira de fazer isso. é possível? alguém tem um exemplo de script cloudformation?

    
por Sverre 23.01.2018 / 09:46

3 respostas

0

Depois de alguns dias perguntando, testando e tentando, me deparei com uma solução de um cara legal no Reddit. a solução completa para o meu problema é a seguinte:

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

a nova parte para mim foi o Fn::GetAtt para recuperar o "PrivateIP" da minha instância, eu não encontrei uma maneira de fazer isso antes de obter ajuda. caso contrário, isso era exatamente como o registro IP público foi criado (e que é bem documentado antes, por exemplo, aqui : (e vejo agora que ele usa o Fn :: getAtt, não tenho certeza porque eu mesmo não obtive isso).

    
por 25.01.2018 / 14:38
4

É possível, mas você precisa configurar uma "Zona privada hospedada", conforme descrito neste artigo Acesse uma versão interna do seu site usando o mesmo nome de domínio | O Amazon AWS Support então adapta a seguinte cloudformation para atender às suas necessidades

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

Crie uma zona privada hospedada em um script Cloudformation separado e exiba a ID da zona Route53.

Use essa ID de zona privada como um parâmetro no script Cloudformation de criação do EC2. Crie um tipo de registro de recurso, com a ID da zona como um parâmetro, e refira o endereço IP privado da instância do EC2.

A mesma coisa pode ser feita com o Public, mas eu criaria um ENI para isso se você não for usar um ELB.

Criando um registro de recurso com o CFN

    
por 24.01.2018 / 19:06