私はこれに困っています。
99%の時間、CloudFormationは、処理できるデバッグメッセージを提供するのに非常に適していますが、特にリソースが非常に単純である場合、"Invalid request"で困惑しました。
これは問題を引き起こしていると言われているリソース(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"
}
私がドキュメントから知ることができることから、必要なすべてが存在し、正しく、正しい形式です。
私が考えることができる唯一のことは、私がaddingこのリソースをexistingに作成したことです。以前に作成したCloudFormationスタックは、すでにDatabase
リソースを作成しています。レコードはAWS::RDS::DBInstance
(必要に応じて、そのためのリソーステンプレートも投稿してください。特別なものはありません)。
「無効なリクエスト」が表示されるのはなぜですか?
ありがとう。
編集:TTL
を使用して、または使用せずに、同じエラーでこれを試しました。
TTL
andDependsOn
を試していないことがわかりました。
それらの両方で動作します。
TTLおよびDependsOnを超えて、主なアイデアは、システムが存在しない参照を使用してレコードセットを作成しようとしないことを確認することです。
そのため、DependsOnは存在するだけでなく、RecordSetGroup定義で参照されるすべてのリソース(ロードバランサー、他のDNSエントリ、ENIなど)をリストする必要があります。これにより、前提条件が満たされるまで、cloudformationがDNSレコードの作成を遅らせることが保証されます。
doにTTL
が設定されているレコードを作成するときに同じエラーが発生する場合は、それらがALIAS
タイプのレコードではないかどうかを確認してくださいnot TLLがあります(AliasTarget
からコピーされるため)。
同様の問題があります。TTL
プロパティを設定したところ、正常に機能しました。このようなレコードセットにはTTL
プロパティが必須のようです。
レコードセットは「ApplicationRds」リソースの"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],
に依存しているため、DependsOn
を使用していないため、DependsOn
を使用しても利益が得られません。