Ich bin in diesem Fall ratlos.
In 99% der Fälle ist CloudFormation in der Lage, Ihnen eine Art Debug-Nachricht zu übermitteln, mit der Sie arbeiten können. "Ungültige Anfrage" hat mich jedoch ratlos gemacht, insbesondere, wenn die Ressource zunächst recht einfach ist.
Dies ist die Ressource, die mir Probleme bereitet (von Ansible generierte Vorlage, daher {{...}} Notationen).
"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"
}
Nach dem, was ich aus den Dokumenten ersehen kann, ist alles vorhanden, korrekt und im richtigen Format.
Das einzige , was ich denken kann, ist , dass ich das Hinzufügen dieser Ressource zu einem vorhandenen Cloudformation Stapel ich zuvor erstellt hat, dass bereits die erstellte Database
Ressource, die für die Aufzeichnung ist ein AWS::RDS::DBInstance
(glücklich , die Ressourcenvorlage für das auch zu schreiben , falls erforderlich, nichts Besonderes) .
Irgendwelche Ideen, warum ich "Ungültige Anfrage" bekomme?
Vielen Dank.
Edit: Ich habe dies mit und ohne TTL
, gleichen Fehler versucht .
quelle
TTL
hat bei mir geklappt,DependsOn
war unnötig. Vielen Dank!Über TTL und DependsOn hinaus besteht die Hauptidee darin, sicherzustellen, dass das System nicht versucht, das Recordset mit nicht vorhandenen Referenzen zu erstellen.
Daher muss DependsOn nicht nur vorhanden sein, sondern auch alle Ressourcen auflisten, auf die in der RecordSetGroup-Definition verwiesen wird (Load Balancers, andere DNS-Einträge, ENIs usw.). Auf diese Weise wird sichergestellt, dass die Cloud-Bildung die Erstellung der DNS-Einträge verzögert, bis die Voraussetzungen erfüllt sind.
quelle
Ich habe das ähnliche Problem, ich habe gerade die
TTL
Eigenschaft festgelegt und es funktioniert gut, scheint, dassTTL
Eigenschaft ein Muss für solche Datensatzgruppen ist.Ich verwende nicht,
DependsOn
da der Datensatz"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],
von der Ressource "ApplicationRds" abhängt. Daher sehe ich keinen zu verwendenden GewinnDependsOn
quelle
Wenn der gleiche Fehler passiert, wenn Datensätze erstellen , die tun einen haben
TTL
Satz, zu überprüfen , ob sie nicht sindALIAS
vom Typ Aufzeichnung, wie sie müssen nicht einen TLL haben (wie es von der kopiert wirdAliasTarget
).quelle