Проверка сертификата AWS ACM с использованием aws.acm.CertificateValidation в Pulumi с использованием python

В 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, поэтому я считаю, что код конфигурации в порядке, но не часть проверки.

Если кто-то может заметить мою ошибку или способ устранения этой проблемы, пожалуйста, дайте мне знать.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это было решение, которое я придумал. Публикация, поскольку это может сэкономить кому-то еще время, пытаясь понять это. Это похоже на очень тяжелый или запутанный способ делать что-то по сравнению, скажем, с терраформированием, но я довольно новичок в 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))

Другие вопросы по теме