AWS CloudFormation restituisce "Richiesta non valida" quando si tenta di creare un AWS :: Route53 :: RecordSet


13

Sono in perdita su questo.

Il 99% delle volte CloudFormation è abbastanza bravo a darti una sorta di messaggio di debug con cui puoi lavorare, ma "Richiesta non valida" mi ha lasciato perplesso, soprattutto quando la risorsa è piuttosto semplice per cominciare.

Questa è la risorsa che mi sta dando problemi (modello generato da Ansible, quindi {{...}} notazioni),

"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"
}

Da quello che posso dire dai documenti, tutto ciò che è richiesto è presente, corretto e nel formato giusto.

L'unica cosa che mi viene in mente è l' aggiunta di questa risorsa a uno stack CloudFormation esistente che ho creato in precedenza che ha già creato la Databaserisorsa, che per la cronaca è un AWS::RDS::DBInstance(felice di pubblicare anche il modello di risorsa per quello, se necessario, niente di speciale) .

Qualche idea sul perché sto ricevendo "Richiesta non valida"?

Grazie.

Modifica: l' ho provato con e senza lo TTLstesso errore.

Risposte:


18

Si scopre che non ho provato TTL e DependsOn .

Funziona con entrambi.


3
l'aggiunta ha TTLfunzionato per me, DependsOnnon era necessario. Grazie!
tmont

1

Oltre a TTL e DependsOn, l'idea principale è assicurarsi che il sistema non tenti di creare il recordset utilizzando riferimenti che non esistono.

Di conseguenza, DependsOn non deve solo esistere, ma deve elencare tutte le risorse a cui fa riferimento la definizione RecordSetGroup (Load Balancer, altre voci DNS, ENI, ecc.). Ciò garantirà che la cloudformation ritardi la creazione dei record DNS fino al soddisfacimento dei prerequisiti.


0

Ho il problema simile, ho appena impostato la TTLproprietà e funziona bene, sembra che la TTLproprietà sia un must per tali set di record.

Non sto usando DependsOnpoiché il set di record dipende "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],dalla risorsa "ApplicationRds", quindi non vedo alcun guadagno da usareDependsOn


0

Se lo stesso errore accade durante la creazione di record che fare avere un TTLset, controllare se non sono ALIASi record -tipo, in quanto devono non avere un TLL (come viene copiato dal AliasTarget).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.