web-dev-qa-db-ja.com

AWS :: Route53 :: RecordSetを作成しようとすると、AWS CloudFormationが「無効なリクエスト」を返す

私はこれに困っています。

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を使用して、または使用せずに、同じエラーでこれを試しました。

13
Stephen Melrose

TTLandDependsOnを試していないことがわかりました。

それらの両方で動作します。

18
Stephen Melrose

TTLおよびDependsOnを超えて、主なアイデアは、システムが存在しない参照を使用してレコードセットを作成しようとしないことを確認することです。

そのため、DependsOnは存在するだけでなく、RecordSetGroup定義で参照されるすべてのリソース(ロードバランサー、他のDNSエントリ、ENIなど)をリストする必要があります。これにより、前提条件が満たされるまで、cloudformationがDNSレコードの作成を遅らせることが保証されます。

1
Donny Nyamweya

doTTLが設定されているレコードを作成するときに同じエラーが発生する場合は、それらがALIASタイプのレコードではないかどうかを確認してくださいnot TLLがあります(AliasTargetからコピーされるため)。

0
danielkza

同様の問題があります。TTLプロパティを設定したところ、正常に機能しました。このようなレコードセットにはTTLプロパティが必須のようです。

レコードセットは「ApplicationRds」リソースの"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],に依存しているため、DependsOnを使用していないため、DependsOnを使用しても利益が得られません。

0
Eslam