尝试创建AWS :: Route53 :: RecordSet时,AWS CloudFormation返回“无效请求”


13

我对此不知所措。

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,出现同样的错误。

Answers:



1

除了TTL和DependsOn之外,主要思想是确保系统不会尝试使用不存在的引用来创建记录集。

这样,DependsOn不仅必须存在,而且还必须列出RecordSetGroup定义中引用的所有资源(负载平衡器,其他DNS条目,ENI等)。这将确保cloudformation延迟DNS记录的创建,直到满足先决条件。


0

我有类似的问题,我刚刚设置了TTL属性并且它工作正常,似乎TTL属性对于此类记录集来说是必须的。

我没有使用,DependsOn因为记录集取决于"ResourceRecords" : [ { "Fn::GetAtt" : [ "ApplicationRds" , "Endpoint.Address" ] } ],“ ApplicationRds”资源,因此我看不到任何使用收益DependsOn


0

如果创建记录时相同的错误发生的事情有一个TTL组,检查它们是否不ALIAS型的记录,因为它们必须不能有TLL(因为它是从复制的AliasTarget)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.