AWS CloudFormation возвращает «Неверный запрос» при попытке создать AWS :: Route53 :: RecordSet


13

Я в недоумении от этого.

В 99% случаев CloudFormation довольно хорошо дает вам какое-то отладочное сообщение, с которым вы можете работать, но «Неверный запрос» оставил меня в тупике, особенно когда ресурс довольно прост для начала.

Это ресурс, который вызывает у меня проблемы (шаблон, сгенерированный Ansible, отсюда {{...}} нотации),

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

Из того, что я могу сказать из документов, все, что требуется, присутствует, правильно и в правильном формате.

Единственное, о чем я могу подумать, - это добавить этот ресурс в существующий стек CloudFormation, который я создал ранее, который уже создал Databaseресурс, который для записи является AWS::RDS::DBInstance(рад опубликовать шаблон ресурса для этого тоже, если требуется, ничего особенного) ,

Есть идеи, почему я получаю "Неверный запрос"?

Благодарю.

Изменить: я пытался это с и без TTL, та же ошибка.

Ответы:


18

Оказывается, я не пробовала TTL и DependsOn .

Работает с обоими из них.


3
добавление TTLработало для меня, DependsOnбыло ненужным. Благодарность!
Tmont

1

Помимо TTL и DependsOn, основная идея заключается в том, чтобы система не пыталась создать набор записей, используя ссылки, которые не существуют.

Таким образом, DependsOn должен не только существовать, но и должен перечислять все ресурсы, на которые есть ссылки в определении RecordSetGroup (балансировщики нагрузки, другие записи DNS, ENI и т. Д.). Это гарантирует, что облачная информация задержит создание записей DNS, пока не будут выполнены предварительные условия.


0

У меня похожая проблема, я только что установил TTLсвойство, и оно отлично работает, кажется, что TTLсвойство является обязательным для таких наборов записей.

Я не использую, так DependsOnкак набор записей зависит "ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],от ресурса «ApplicationRds», поэтому я не вижу никакой выгоды для использованияDependsOn


0

Если та же ошибка возникает при создании записей, у которых есть TTLнабор, проверьте, не являются ли они ALIASзаписями -типа, так как они не должны иметь TLL (как это скопировано из AliasTarget).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.