Je suis perdu sur celui-ci.
99% du temps, CloudFormation est assez bon pour vous donner une sorte de message de débogage avec lequel vous pouvez travailler, mais "demande non valide" m'a laissé perplexe, surtout lorsque la ressource est assez simple pour commencer.
C'est cette ressource qui me pose des problèmes (modèle généré par Ansible, donc {{...}} notations),
"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"
}
D'après ce que je peux dire des documents, tout ce qui est requis est présent, correct et au bon format.
La seule chose à laquelle je peux penser est que j'ajoute cette ressource à une pile CloudFormation existante que j'ai créée plus tôt et qui a déjà créé la Database
ressource, qui pour l'enregistrement est un AWS::RDS::DBInstance
(heureux de publier le modèle de ressource pour cela aussi si nécessaire, rien de spécial) .
Des idées pour lesquelles je reçois une "demande non valide"?
Merci.
Edit: j'ai essayé cela avec et sans TTL
, même erreur.
la source
TTL
fonctionné pour moi,DependsOn
n'était pas nécessaire. Merci!Au-delà de TTL et DependsOn, l'idée principale est de s'assurer que le système n'essaie pas de créer le jeu d'enregistrements à l'aide de références qui n'existent pas.
En tant que tel, DependsOn doit non seulement exister, mais il doit répertorier toutes les ressources référencées dans la définition RecordSetGroup (équilibreurs de charge, autres entrées DNS, ENI, etc.). Cela garantira que la cloudformation retarde la création des enregistrements DNS jusqu'à ce que les conditions préalables soient remplies.
la source
J'ai le même problème, je viens de définir la
TTL
propriété et cela fonctionne bien, il semble que laTTL
propriété soit un must pour ces jeux d'enregistrements.Je n'utilise pas
DependsOn
car l'ensemble d'enregistrements dépend"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],
de la ressource "ApplicationRds", donc je ne vois aucun gain à utiliserDependsOn
la source
Si la même erreur se produit lors de la création des documents qui faire un
TTL
ensemble, vérifiez si elles ne sont pas desALIAS
documents -type, car ils doivent pas avoir un TLL (comme il est copié à partir duAliasTarget
).la source