В Pulumi я создаю сертификат ACM с доменным именем и номером SAN. Это настроено для проверки с использованием DNS.
Записи Route53 создаются с помощью следующей функции. Это работает, как и ожидалось, в том смысле, что записи создаются, а статус сертификата изменяется на действительный в AWS.
# Create and add CNAME for DNS validate for ACM Cert
def add_acm_validation_records(self, cert: aws.acm.Certificate) -> list:
valid_fqdns = cert.domain_validation_options.apply(
lambda o: self.iterate_records(o)
)
return valid_fqdns
def iterate_records(self, validation_options):
fqdns = []
for record_to_add in validation_options:
record = aws.route53.Record(
f"r53-acm-verify-{record_to_add.domain_name}",
allow_overwrite=True,
name=record_to_add.resource_record_name,
ttl=60,
type=record_to_add.resource_record_type,
records=[record_to_add.resource_record_value],
zone_id=self.__customer_zone.zone_id,
)
fqdns.append(record.fqdn)
return fqdns
Я не могу проверить список fqdns
в списке. На данный момент я не могу понять, как их распиновать.
Список fqdns
передается следующей функции:
def validate(self, fqdns: list) -> aws.acm.Certificate:
cert_validation = aws.acm.CertificateValidation(
f"{self.__customer_code}-cert-validation",
certificate_arn=self.__customer_cert.arn,
validation_record_fqdns=[pulumi.Output.all(fqdns).apply(lambda l: f"{l}")],
opts=pulumi.ResourceOptions(provider=self.__aws_provider_west_2),
)
Это дает мне следующую ошибку:
aws:acm:CertificateValidation (abcd-cert-validation):
error: 1 error occurred:
* 3 errors occurred:
* missing *.api.abcd.sanda.XXXXXXXX.co.uk DNS validation record: _AAAAAAAA.api.abcd.sanda.XXXXXXXX.co.uk
* missing *.web.abcd.sanda.XXXXXXXX.co.uk DNS validation record: _BBBBBBBB.web.abcd.sanda.XXXXXXXX.co.uk
* missing *.abcd.sanda.XXXXXXXX.co.uk DNS validation record: _CCCCCCCC.abcd.sanda.XXXXXXXX.co.uk
Я проверил, что 3 записи, упомянутые выше, находятся в AWS Route53, поэтому я не уверен, почему Pulumi считает, что они отсутствуют...
На данный момент Certificate
в AWS
изменил свой статус с Pending
на Issued
, поэтому я считаю, что код конфигурации в порядке, но не часть проверки.
Если кто-то может заметить мою ошибку или способ устранения этой проблемы, пожалуйста, дайте мне знать.
Это было решение, которое я придумал. Публикация, поскольку это может сэкономить кому-то еще время, пытаясь понять это. Это похоже на очень тяжелый или запутанный способ делать что-то по сравнению, скажем, с терраформированием, но я довольно новичок в Pulumi, поэтому я предполагаю, что есть гораздо лучший способ сделать это, и я слишком разрабатываю решение.
# Note: This was a list of x elements and has been converted to a list of 1 element
def iterate_fqdns(self, fqdns):
cert_validation = aws.acm.CertificateValidation(
f"{self.__customer_code}-cert-validation",
certificate_arn=self.__customer_cert.arn,
validation_record_fqdns=fqdns[0],
opts=pulumi.ResourceOptions(provider=self.__aws_provider_west_2),
)
# Set the validation parameters for the cert
def validate(self, fqdns: list) -> aws.acm.Certificate:
pulumi.Output.all(fqdns).apply(lambda o: self.iterate_fqdns(o))