AWS CloudFormation gibt "Ungültige Anfrage" zurück, wenn versucht wird, ein AWS :: Route53 :: RecordSet zu erstellen

13

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 DatabaseRessource, 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 .

Stephen Melrose
quelle

Antworten:

18

Es stellte sich heraus, dass ich es nicht versucht hatte TTL und DependsOn .

Funktioniert mit beiden.

Stephen Melrose
quelle
3
das hinzufügen TTLhat bei mir geklappt, DependsOnwar unnötig. Vielen Dank!
Montag,
1

Ü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.

Donny Nyamweya
quelle
0

Ich habe das ähnliche Problem, ich habe gerade die TTLEigenschaft festgelegt und es funktioniert gut, scheint, dass TTLEigenschaft ein Muss für solche Datensatzgruppen ist.

Ich verwende nicht, DependsOnda der Datensatz "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],von der Ressource "ApplicationRds" abhängt. Daher sehe ich keinen zu verwendenden GewinnDependsOn

Eslam
quelle
0

Wenn der gleiche Fehler passiert, wenn Datensätze erstellen , die tun einen haben TTLSatz, zu überprüfen , ob sie nicht sind ALIASvom Typ Aufzeichnung, wie sie müssen nicht einen TLL haben (wie es von der kopiert wird AliasTarget).

danielkza
quelle