Я пытаюсь использовать AWS Cloud Development Kit для создания сертификата SSL для некоторых поддоменов моего веб-сайта. Проблема в том, что я использую AWS Organizations, а соответствующие ресурсы принадлежат разным учетным записям AWS. размещенная зона для моего домена является частью нашей основной учетной записи. , но я использую CDK для развертывания стека в связанной учетной записи. Это означает, что DnsValidatedCertificate
класс может запросить новый сертификат (они все еще видны в ACM после отката стека), но выдает ошибку при попытке создать запись DNS для автоматической проверки запроса.
Вот ошибка (номер моей учетной записи и имя стека отредактированы):
5/6 | 22:44:14 | CREATE_FAILED | AWS::CloudFormation::CustomResource | SubSubDomainsCertificate/CertificateRequestorResource/Default (SubSubDomainsCertificateCertificateRequestorResourceBC626C85) Failed to create resource. User: arn:aws:sts::123456789012:assumed-role/MyStack-SubSubDomainsCertificateCertificat-16QRI74P8POO2/MyStack-SubSubDomainsCertificateCertificat-BXZ55WHIH1XC is not authorized to access this resource
new CustomResource (C:\repos\my-project\node_modules\@aws-cdk\aws-cloudformation\lib\custom-resource.ts:92:21)
\_ new DnsValidatedCertificate (C:\repos\my-project\node_modules\@aws-cdk\aws-certificatemanager\lib\dns-validated-certificate.ts:81:29)
\_ new MyStack (C:\repos\my-project\.elasticbeanstalk\api-stack.js:91:25)
И вот соответствующий фрагмент кода CDK (опять же, с удаленными HZ и доменом):
// Executed with `cdk deploy --profile profileForLinkedAwsAccount`
const hostedZone = route53.HostedZone.fromHostedZoneAttributes(
this,
'MyDomainHostedZone',
{
hostedZoneId: 'Z2ABC1234RYN', // in master AWS account
zoneName: 'mydomain.com.'
}
);
const certificate = new certificatemanager.DnsValidatedCertificate(
this,
'SubSubDomainsCertificate',
{
domainName: `*.demo.mydomain.com`,
hostedZone,
region: 'us-east-1',
validationMethod: certificatemanager.ValidationMethod.DNS // ???
}
);
Итак, есть ли способ настроить CDK, который позволит автоматически выполнять проверку DNS? Или мне нужно сделать это в качестве второго шага, используя другой профиль?
РЕДАКТИРОВАТЬ: по предложению Майкла я добавил роль с именем LinkedAccountCertValidatorRole
в главную учетную запись AWS. Управляемая политика, которую я привязал к роли, и ее доверительные отношения показаны ниже. К сожалению, я все еще получаю ту же ошибку. Кроме того, вкладка Access Advisor указывает на то, что политика никогда не использовалась этой ролью.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "route53:ChangeResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/Z2ABC1234RYN"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}