AWS CloudFormation renvoyant une «demande non valide» lors de la tentative de création d'un AWS :: Route53 :: RecordSet

13

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

Stephen Melrose
la source

Réponses:

18

Avère que je n'ai pas essayé TTL et DependsOn .

Fonctionne avec les deux.

Stephen Melrose
la source
3
l'ajout a TTLfonctionné pour moi, DependsOnn'était pas nécessaire. Merci!
2014 à 7h34
1

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.

Donny Nyamweya
la source
0

J'ai le même problème, je viens de définir la TTLpropriété et cela fonctionne bien, il semble que la TTLpropriété soit un must pour ces jeux d'enregistrements.

Je n'utilise pas DependsOncar l'ensemble d'enregistrements dépend "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],de la ressource "ApplicationRds", donc je ne vois aucun gain à utiliserDependsOn

Eslam
la source
0

Si la même erreur se produit lors de la création des documents qui faire un TTLensemble, vérifiez si elles ne sont pas des ALIASdocuments -type, car ils doivent pas avoir un TLL (comme il est copié à partir du AliasTarget).

danielkza
la source