Saya bingung yang satu ini.
99% dari waktu CloudFormation cukup baik memberi Anda beberapa jenis pesan debug yang dapat Anda kerjakan, tetapi "Permintaan tidak valid" telah membuat saya bingung, terutama ketika sumber dayanya cukup sederhana untuk memulai.
Ini dikatakan sumber daya yang memberi saya masalah (templat yang dihasilkan oleh Ansible, karenanya {{...}} notasi),
"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"
}
Dari apa yang saya tahu dari dokumen, semua yang diperlukan ada, benar, dan dalam format yang tepat.
Satu-satunya hal yang dapat saya pikirkan adalah saya menambahkan sumber daya ini ke tumpukan CloudFormation yang sudah saya buat sebelumnya yang sudah menciptakan Database
sumber daya, yang untuk catatan adalah AWS::RDS::DBInstance
(senang memposting template sumber daya untuk itu juga jika diperlukan, tidak ada yang istimewa) .
Adakah ide mengapa saya mendapatkan "Permintaan tidak valid"?
Terima kasih.
Sunting: Saya mencoba ini dengan dan tanpa TTL
kesalahan yang sama.
sumber
TTL
bekerja untuk saya,DependsOn
tidak perlu. Terima kasih!Di luar TTL dan DependsOn, ide utamanya adalah untuk memastikan bahwa sistem tidak berusaha untuk membuat recordset menggunakan referensi yang tidak ada.
Dengan demikian, DependsOn tidak hanya harus ada, tetapi harus mencantumkan semua sumber daya yang direferensikan dalam definisi RecordSetGroup (Load Balancers, entri DNS lainnya, ENI, dll). Ini akan memastikan bahwa cloudformation menunda pembuatan catatan DNS sampai prasyarat terpenuhi.
sumber
Saya memiliki masalah yang sama, saya baru saja mengatur
TTL
properti dan berfungsi dengan baik, sepertinyaTTL
properti adalah suatu keharusan untuk set rekaman tersebut.Saya tidak menggunakan
DependsOn
karena set rekaman tergantung pada"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],
sumber daya "ApplicationRds", jadi saya tidak melihat adanya keuntungan untuk digunakanDependsOn
sumber
Jika kesalahan yang sama terjadi ketika membuat catatan yang melakukan memiliki
TTL
set, memeriksa apakah mereka tidakALIAS
catatan -jenis, karena mereka harus tidak memiliki TLL (seperti yang disalin dariAliasTarget
).sumber