使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

CDK Route 53区域查找返回错误的区域ID。

0

【以下的问题经过翻译处理】 我们正在尝试更新我们的IaC代码库至CDK v2。在此之前,我们将在另一个测试环境中部署整个系统的堆栈。堆栈的一部分会创建一个用于我们负载均衡器的TLS证书。

var hostedZone = HostedZone.FromLookup(this, $"{config.ProductName}-dns-zone", new HostedZoneProviderProps
{
	DomainName = config.RootDomainName
});

DnsValidatedCertificate certificate = new DnsValidatedCertificate(this, $"{config.ProductName}-webELBCertificate-{config.Environment}", new DnsValidatedCertificateProps
{
	HostedZone = hostedZone,
	DomainName = config.AppDomainName,
	// Used to implement ValidationMethod = ValidationMethod.DNS
	Validation = CertificateValidation.FromDns(hostedZone)
});

由于某种原因,合成的模板使用的AWS::CloudFormation::CustomResource的托管区ID并不是该账户的区域ID,这导致证书请求验证过程失败 - 进而整个cdk部署失败,因为它无法找到放置验证记录的真实区域。

如果查看证书管理器页面中的各个挂起的证书请求,可以通过手动按下[[在Route 53中创建记录]]按钮来批准请求,该方式会找到正确的区域。

我不确定CDK在哪里找到的这个不属于我们的区域ID?

    "AppwebELBCertificatetestCertificateRequestorResource68D095F7": {
      "Type": "AWS::CloudFormation::CustomResource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "AppwebELBCertificatetestCertificateRequestorFunctionCFE32764",
            "Arn"
          ]
        },
        "DomainName": "root.domain",
        "HostedZoneId": "NON-EXISTENT ZONE ID"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "App-webELBStack-test/App-webELBCertificate-test/CertificateRequestorResource/Default"
      }
    }
profile picture
专家
已提问 1 年前47 查看次数
1 回答
0

【以下的回答经过翻译处理】 CDK有一个名为"cdk.context.json"的文件,该文件缓存了已经被删除了很长时间的同名旧区域的(不存在的)区域ID。删除该文件可以使CDK刷新使用新的区域ID。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则