Я в недоумении по этому поводу.
В 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
).