Назад | Перейти на главную страницу

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

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

В 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, та же ошибка.

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

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

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

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

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

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

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