如何在为域名使用令牌时为AWS CDK指定验证域



我正在从AWS CDK堆栈请求域证书。对于域名,我使用AWS参数存储中的值,如:

const domainName = StringParameter.valueForStringParameter(this, `/musical/${branch}/PaymentDomain`)
const cert = new Certificate(this, 'Certificate', {
domainName: domainName,
})

当我尝试运行cdk-synthcdk-deploy时,我收到一个错误当使用域名令牌时,需要提供"validationDomains">

我试图将validationDomains添加到证书申请中,但不仅此属性已折旧,我还不知道如何指定验证域。它有一种我不理解的打字脚本格式:

CertificateProps.validationDomains?: {
[domainName: string]: string;
}

由于validationDomains折旧,文档说我应该使用验证,但当我尝试使用validation时,文档说这应该用于验证方法(DNS或电子邮件(

当我为域名使用令牌时,如何创建正确的证书请求?

AWS不会创建证书,除非它能够验证您拥有您想要证书的域。它有两种方法可以验证您是否拥有该域。通过DNS或电子邮件。

如果使用电子邮件验证为my.domain.com创建证书,则会向管理员、管理员、主机管理员、邮政局长和网站管理员all@my.domain.com发送电子邮件,或者您也可以指定一个超级域,以便将其发送到domain.com。

如果使用DNS验证,AWS将生成一个特定的记录添加为my.domain.com的子域,以证明您拥有它。如果对此域使用Route53 HostedZone,您可以指定该区域,并且它是无缝的。如果没有,你仍然可以进行DNS验证,但你必须手动(或编写自定义资源(创建AWS需要的记录,否则堆栈将永远无法完成更新。

const domainName = StringParameter.valueForStringParameter(this, `/musical/${branch}/PaymentDomain`)
const cert = new Certificate(this, 'Certificate', {
domainName: domainName,
validation: CertificateValidation.fromDns(hostedZone), // Seamless
validation: CertificateValidation.fromDns(), // You need to create DNS validation record manually
validation: CertificateValidation.fromEmail() // Click link from email
})

选择其中一种验证方法,并在创建证书时将其包括在内

不确定是否有其他人觉得这很有用。但当我没有一个正确格式的域名时,我也遇到了同样的错误。我想我在为某个特定区域形成字符串时,在某个地方有一个null。这导致域名格式无效。

例如,我使用

domainName: 'hello.world.' 

而不是

domainName: 'hello.world.com'

这花了我更长的时间来调试,因为错误消息并没有告诉你可能发生了什么。

最新更新