Amazon cloudformation CloudFormation Route53-更新现有记录集

Amazon cloudformation CloudFormation Route53-更新现有记录集,amazon-cloudformation,amazon-route53,Amazon Cloudformation,Amazon Route53,我正在尝试编写一个蓝色/绿色CFT,该CFT将拆除并重建EC2实例ELB,并使用此ELB的更新DNS名称更新Route53记录别名 如果别名记录不存在,我可以在创建EC2实例并ELB附加这些实例后正确创建别名记录集。但是,如果记录集使用旧的ELB DNS名称存在,则CFT将失败,并显示“Alias recordset exists”。自然-我希望在运行完整CFT时使用更新的ELB DNS名称更新此记录。有什么建议吗 "HostRecord" : { "Type" : "AWS::

我正在尝试编写一个蓝色/绿色CFT,该CFT将拆除并重建EC2实例ELB,并使用此ELB的更新DNS名称更新Route53记录别名

如果别名记录不存在,我可以在创建EC2实例并ELB附加这些实例后正确创建别名记录集。但是,如果记录集使用旧的ELB DNS名称存在,则CFT将失败,并显示“Alias recordset exists”。自然-我希望在运行完整CFT时使用更新的ELB DNS名称更新此记录。有什么建议吗

    "HostRecord" : {
    "Type" : "AWS::Route53::RecordSet",
    "Properties" : {
    "HostedZoneName" : "REDACTED",
    "Comment" : "Updates the ELB DNS name into Route 54 recordset.",
    "Name" : "REDACTED",
    "Type" : "A",
    "AliasTarget" : {
        "DNSName" : { "Fn::GetAtt" : [ "ESClusterELB" , "DNSName" ] },
        "HostedZoneId" : { "Fn::GetAtt" : [ "ESClusterELB" , "CanonicalHostedZoneNameID" ] }
    }

不支持从2个不同的CloudFormation堆栈管理单个资源(如记录集)

对于您的用例,我有一些建议:

  • 我建议您独立于用于蓝色/绿色的模板来管理记录。一旦创建/更新了green,并且希望您的记录解析为green ELB,您可以只更新管理记录集的堆栈,将其设置为适当的别名
  • 使用与第一个建议相同的基础。您可以在创建/更新堆栈时使用由CloudFormation触发的SNS通知来自动执行此操作。结合使用Lambda,您可以动态更新控制记录集的堆栈
  • 您可以创建一个仅用于将记录集更新为所需别名的别名

  • 只是为了有创意。您还可以设置一个参数,该参数在CF中设置一个条件,该条件将为路由53执行不同的部分,例如,有一个条件来创建、删除、忽略CF的内容。差不多吧

    1)您是否暗示我直接通过控制台执行此操作?3) 这看起来很有希望,有什么例子我可以细读吗?我用谷歌搜索过,但没有找到合适的资源1)不是直接在路线53中,而是在不受蓝色/绿色影响的云信息模板中。3) 有很多关于CustomResources的资源,但我敢打赌,对于那个特定的用例,您不会找到任何东西。如果必须这样做,我会创建一个简单的python CustomResource Lambda,它将来自ELB的必要输入作为参数,并在每次调用它时将记录“UPSERT”到Route53中。谢谢。3) 看起来很有趣,但在谷歌上我注意到了这个线索。Route53似乎不喜欢从其域外更新记录集。这仍然是个问题吗。这就是他所写的“如果我们这样做(通过webUI或在命令行上使用“aws route53更改资源记录集”,UPSERT作为操作类型),CloudFormation在删除堆栈时不会删除HostedZone中的Route 53条目。如果我们不更新记录集,则会按预期删除它。”这正是我建议您使用解决方案的原因1)。您可以通过单独的CloudFormation堆栈完全控制域。与“UPSERT”操作不同,您只需更新堆栈(例如使用参数输入),CloudFormation将处理其余操作。最佳实践是始终通过CloudFormation控制资源,这样可以避免论坛上暴露的问题。您甚至可以将解决方案1)和3)混合在一起,方法是对管理记录的堆栈进行自动更新。您好-我一直在努力获取更新路由53堆栈的示例-根据您提出的建议,我认为这是最有希望的。是否有任何代码片段/github位置可以帮助我定制Route53记录集更新方案?