#amazon-web-services #aws-cdk
#amazon-web-services #aws-cdk
Вопрос:
Я запрашиваю сертификат домена из стека AWS CDK. Для имени домена я использую значение из хранилища параметров AWS, например:
const domainName = StringParameter.valueForStringParameter(this, `/musical/${branch}/PaymentDomain`)
const cert = new Certificate(this, 'Certificate', {
domainName: domainName,
})
Когда я пытаюсь запустить cdk synth или cdk deploy, я получаю сообщение об ошибке При использовании токенов для доменных имен, необходимо указать «validationDomains»
Я попытался добавить validationDomains в запрос сертификата, но это свойство не только обесценилось, я также не знаю, как указать домен проверки. Он имеет формат typescript, который я не понимаю:
CertificateProps.validationDomains?: {
[domainName: string]: string;
}
Поскольку validationDomains обесценивается, в документах говорится, что я должен использовать проверку, но когда я пытаюсь использовать проверку, в документах говорится, что это следует использовать для метода проверки (DNS или email)
Как мне создать правильный запрос на сертификат при использовании токена для доменного имени?
Ответ №1:
AWS не будет создавать сертификаты, если не сможет подтвердить, что вы являетесь владельцем домена, для которого требуется сертификат. У него есть два способа подтвердить, что вы являетесь владельцем домена. Через DNS или по электронной почте.
При использовании проверки электронной почты для создания сертификата для my.domain.com электронное письмо будет отправлено администратору, администратору, хост-мастеру, почтальону и веб-мастеру всем @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
})
Выберите один из этих методов проверки и включите его при создании сертификата
Ответ №2:
Не уверен, что кто-нибудь еще найдет это полезным. Но я получил ту же ошибку, когда у меня не было правильно сформированного доменного имени. Я думаю, что у меня где-то было значение null при формировании строки для определенного региона. Это привело к недопустимому формату доменного имени.
Например, я использовал
domainName: 'hello.world.'
вместо (скажем)
domainName: 'hello.world.com'
Это заняло у меня гораздо больше времени для отладки, чем я хотел бы признать, поскольку в сообщении об ошибке не указано, что именно могло произойти.