Eu estou em uma perda em um presente.
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, especialmente quando o recurso é bastante simples para começar.
Este é o referido recurso que está me causando 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 posso dizer nos documentos, tudo o que é necessário está presente, correto e no formato certo.
A única coisa em que consigo pensar é que estou adicionando este recurso a uma pilha existente do CloudFormation que criei anteriormente que já criou o Database
recurso, que para registro é um AWS::RDS::DBInstance
(feliz em postar o modelo de recurso para isso também, se necessário, nada de especial) .
Alguma ideia de por que estou recebendo "Solicitação inválida"?
Obrigado.
Editar: tentei isso com e sem um TTL
, mesmo erro.
Acontece que eu não tentei
TTL
eDependsOn
.Funciona com os dois.
Além de TTL e DependsOn, a ideia principal é garantir que o sistema não tente criar o conjunto de registros usando referências que não existem.
Como tal, DependsOn não deve apenas existir, mas deve listar todos os recursos que são referenciados na definição de RecordSetGroup (Load Balancers, outras entradas de DNS, ENIs, etc). Isso garantirá que o cloudformation atrase a criação dos registros DNS até que os pré-requisitos sejam atendidos.
Eu tenho o problema semelhante, acabei de definir a
TTL
propriedade e funciona bem, parece que aTTL
propriedade é obrigatória para esses conjuntos de registros.Não estou usando
DependsOn
pois o conjunto de registros depende"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],
do recurso "ApplicationRds", então não vejo nenhum ganho em usarDependsOn
Se o mesmo erro estiver acontecendo ao criar registros que possuem um
TTL
conjunto, verifique se eles não sãoALIAS
registros do tipo, pois não devem ter um TLL (pois é copiado do arquivoAliasTarget
).