AWS CloudFormation devuelve "Solicitud no válida" al intentar crear un AWS :: Route53 :: RecordSet

13

Estoy perdido en este caso.

El 99% de las veces CloudFormation es bastante bueno para darle algún tipo de mensaje de depuración con el que puede trabajar, pero "Solicitud no válida" me ha dejado perplejo, especialmente cuando el recurso es bastante simple para empezar.

Este es dicho recurso que me está dando problemas (plantilla generada por Ansible, de ahí {{...}} anotaciones),

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

Por lo que puedo decir de los documentos, todo lo que se requiere está presente, correcto y en el formato correcto.

Lo único que se me ocurre es que estoy agregando este recurso a una pila existente de CloudFormation que creé anteriormente y que ya creó el Databaserecurso, que para el registro es un AWS::RDS::DBInstance(feliz de publicar la plantilla de recursos para eso también si es necesario, nada especial) .

¿Alguna idea de por qué recibo una "solicitud no válida"?

Gracias.

Editar: Intenté esto con y sin un TTLmismo error.

Stephen Melrose
fuente

Respuestas:

18

Resulta que no lo intenté TTL y DependsOn .

Funciona con ambos.

Stephen Melrose
fuente
3
agregar TTLfuncionó para mí, DependsOnera innecesario. ¡Gracias!
tmont
1

Más allá de TTL y DependsOn, la idea principal es asegurarse de que el sistema no intente crear el conjunto de registros utilizando referencias que no existen.

Como tal, DependsOn no solo debe existir, sino que también debe enumerar todos los recursos a los que se hace referencia en la definición RecordSetGroup (Balanceadores de carga, otras entradas DNS, ENI, etc.). Esto asegurará que la formación en la nube retrase la creación de los registros DNS hasta que se cumplan los requisitos previos.

Donny Nyamweya
fuente
0

Tengo el problema similar, acabo de establecer la TTLpropiedad y funciona bien, parece que la TTLpropiedad es imprescindible para tales conjuntos de registros.

No estoy usando DependsOnya que el conjunto de registros depende "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],del recurso "ApplicationRds", por lo que no veo ninguna ganancia para usarDependsOn

Eslam
fuente
0

Si el mismo error ocurre cuando se crean registros que hacer un TTLconjunto, comprobar si no son ALIASregistros de tipo, ya que deben no tener un TLL (ya que se copia de la AliasTarget).

danielkza
fuente