如何使用CloudFormation自动更新名称服务器并验证SSL证书?

问题描述

AWS文档声称,如果我在另一个DNS域名中有一个注册域,那么我必须在该注册域上更新名称服务器,因此我想如果我通过指定在R53上注册的域来创建托管区域,名称服务器将自动更新。这是我的CloudFormation的一部分:

   HostedZone:
    Type: "AWS::Route53::HostedZone"
    Properties:
      Name: example.com

我确实已经在R53上注册了example.com,但是当我转到该域时,它的托管服务器SOA记录中的域名服务器却与此不同。

如果我这样做,文档也声称https://aws.amazon.com/blogs/security/how-to-use-aws-certificate-manager-with-aws-cloudformation/

我确实这样:

  SSLCertificate:
    Type: AWS::CertificateManager::Certificate
    Properties:
      DomainName: example.com
      ValidationMethod: DNS
      DomainValidationoptions:
        - DomainName: example.com
          HostedZoneId: !Ref HostedZone

它说应该已经自动验证了SSL证书,但是堆栈在这里停止了,我必须去证书管理器(当然是在更新名称服务器之后),即使单击“导入到R53”(CNAME), CNAME是在托管区域中自动创建的,但其值有误,然后堆栈继续前进。

我做错什么了吗?

解决方法

“错误的CNAME记录”可能是此处的关键字,您是否尝试过从CF模板中删除证书资源,使用它更新stavk,清理CNAME条目,确保从ACM中删除了证书然后添加将证书资源再次添加到CF模板?

我的猜测朝着CloudFormation如何更新资源的方向发展。对于证书,大多数更改都需要重新创建,这意味着首先创建一个新证书,然后在成功创建新证书后删除旧证书。 男性有这种行为,但有时会引起问题。

还要确保DomainNameValidation属性字段中的相同。由于配置错误,以下模板无法验证:

Resources:
  Certificate:
    Type: AWS::CertificateManager::Certificate
    Properties:
      DomainName: www.example.com
      DomainValidationOptions:
      - DomainName: example.com
        HostedZoneId: !Ref Zone
      ValidationMethod: DNS