You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK配置API Gateway自定义域名:导入ACM证书缺失验证证书的解决

解决AWS CDK配置API Gateway自定义域名时的Missing ownershipVerificationCertificate错误

问题原因

你使用的是导入到ACM的第三方证书,AWS要求这类证书必须完成域名所有权验证,但CDK的高层DomainName构造默认没有暴露ownershipVerificationCertificate配置项,导致部署时触发报错。

解决方案

方法1:用L1构造直接配置底层资源

CDK的L1构造(CfnDomainName)对应CloudFormation的原生资源定义,支持设置ownershipVerificationCertificateArn参数,具体步骤:

  1. 导入已有的第三方ACM证书:
    const importedCert = acm.Certificate.fromCertificateArn(this, 'ImportedCert', 'arn:aws:acm:你的区域:账号ID:certificate/证书ID');
    
  2. 导入用于所有权验证的证书(如果和主证书是同一个,直接复用上面的ARN即可):
    const verificationCert = acm.Certificate.fromCertificateArn(this, 'VerificationCert', 'arn:aws:acm:你的区域:账号ID:certificate/验证证书ID');
    
  3. 创建L1级别的自定义域名资源:
    const cfnDomainName = new apigateway.CfnDomainName(this, 'MyCustomDomain', {
      domainName: 'api.yourdomain.com',
      certificateArn: importedCert.certificateArn,
      ownershipVerificationCertificateArn: verificationCert.certificateArn,
      endpointConfiguration: {
        types: ['REGIONAL'] // 根据你的API类型选REGIONAL或EDGE
      }
    });
    
  4. 关联自定义域名到你的RestAPI:
    new apigateway.CfnBasePathMapping(this, 'ApiPathMapping', {
      domainName: cfnDomainName.ref,
      restApiId: yourRestApi.restApiId,
      stage: yourRestApi.deploymentStage.stageName
    });
    

方法2:确保证书已完成所有权验证

如果你的第三方证书已经在ACM控制台完成了域名所有权验证(DNS或邮件验证,状态显示「已验证」),直接导入到CDK中使用即可。此时AWS已确认域名归属,部署时不会再要求配置验证证书。

注意事项

  • 证书区域必须和API Gateway类型匹配:EDGE类型的API必须用us-east-1区域的证书,REGIONAL类型用对应区域的证书。
  • 所有权验证证书可以和主证书为同一文件,只要它完成了域名验证流程。

内容的提问来源于stack exchange,提问作者Abraham Osmond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:43:13