使用Pulumi Python的aws.acm.CertificateValidation验证ACM证书遇错求助
问题根源与修复方案
你的CertificateValidation资源传递validation_record_fqdns参数时格式错误,导致Pulumi无法正确识别验证记录的FQDN,尽管Route53记录已存在且证书已签发。
错误原因
add_acm_validation_records返回的是一个pulumi.Output[list[str]](包含所有验证记录的FQDN),但你在validate函数中错误地将其包裹为字符串形式的Output:
validation_record_fqdns=[pulumi.Output.all(fqdns).apply(lambda l: f"{l}")]
这会把整个FQDN列表转换成类似"[<Output object>, <Output object>]"的字符串,而非ACM所需的单个FQDN的Output列表。
修复后的代码
直接将add_acm_validation_records返回的Output列表传给validation_record_fqdns即可:
def validate(self, fqdns: pulumi.Output[list]) -> aws.acm.Certificate: cert_validation = aws.acm.CertificateValidation( f"{self.__customer_code}-cert-validation", certificate_arn=self.__customer_cert.arn, validation_record_fqdns=fqdns, opts=pulumi.ResourceOptions(provider=self.__aws_provider_west_2), ) return cert_validation
排查方法
- 查看Output实际值:若要打印
fqdns的内容,需通过apply异步获取值,不能直接print:fqdns.apply(lambda l: print("验证记录FQDN:", l)) - 确认资源依赖:确保
CertificateValidation在所有Route53记录创建完成后再执行。Pulumi通常会自动处理依赖,但跨区域资源可显式添加depends_on:opts=pulumi.ResourceOptions( provider=self.__aws_provider_west_2, depends_on=[your_route53_records_list] ) - 核对FQDN一致性:检查Route53记录的FQDN与ACM报错中要求的是否完全一致(包括末尾的
.,Pulumi的record.fqdn会自动添加,需确认ACM要求的格式)。
内容的提问来源于stack exchange,提问作者alexis
相关产品推荐
相关产品推荐

