AWS CloudFormation retornando “Solicitação inválida” ao tentar criar um AWS :: Route53 :: RecordSet

13

Estou sem saber disso.

99% do tempo o CloudFormation é muito bom em fornecer algum tipo de mensagem de depuração com a qual você pode trabalhar, mas "Solicitação inválida" me deixou perplexo, principalmente quando o recurso é bastante simples para começar.

Isso é dito recurso que está me dando problemas (modelo gerado pelo Ansible, portanto, {{...}} notações),

"DatabaseDNSRecord": {
    "Type": "AWS::Route53::RecordSet",
    "Properties": {
        "HostedZoneId": "HOSTED_ZONE_ID",
        "Name": "db.{{ item.env_name|lower }}v2.<DOMAIN>.com.",
        "ResourceRecords": [
            {
                "Fn::GetAtt": [ "Database", "Endpoint.Address" ]
            }
        ],
        "Type": "CNAME"
    },
    "DependsOn": "Database"
}

Pelo que sei dos documentos, tudo o que é necessário está presente, correto e no formato certo.

A única coisa em que consigo pensar é em adicionar este recurso a uma pilha existente do CloudFormation que criei anteriormente que já criou o Databaserecurso, o que para o registro é um AWS::RDS::DBInstance(prazer em postar o modelo de recurso também, se necessário, nada de especial) .

Alguma idéia de por que estou recebendo "Solicitação inválida"?

Obrigado.

Edit: Eu tentei isso com e sem o TTLmesmo erro.

Stephen Melrose
fonte

Respostas:

18

Acontece que eu não tentei TTL e DependsOn .

Funciona com os dois.

Stephen Melrose
fonte
3
adicionar TTLfuncionou para mim, DependsOnera desnecessário. obrigado!
tmont 31/12/14
1

Além do TTL e do DependsOn, a idéia principal é garantir que o sistema não tente criar o conjunto de registros usando referências que não existem.

Como tal, o DependsOn deve não apenas existir, mas deve listar todos os recursos mencionados na definição do RecordSetGroup (balanceadores de carga, outras entradas de DNS, ENIs, etc.). Isso garantirá que a formação em nuvem adie a criação dos registros DNS até que os pré-requisitos sejam atendidos.

Donny Nyamweya
fonte
0

Eu tenho o problema semelhante, acabei de definir a TTLpropriedade e ela funciona bem, parece que a TTLpropriedade é uma obrigação para esses conjuntos de registros.

Não estou usando, DependsOnpois o conjunto de registros depende "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],do recurso "ApplicationRds", portanto, não vejo nenhum ganho em usarDependsOn

Eslam
fonte
0

Se o mesmo erro está acontecendo ao criar registros que fazer ter um TTLconjunto, verifique se eles não são ALIASregistros -tipo, como eles devem não ter um TLL (como ele é copiado do AliasTarget).

danielkza
fonte