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

AWS CDK Python使用DomainNameOptions时如何为LambdaRestApi创建ApiMapping

解决方案

错误根因

你的报错来自两个类型不匹配问题:

  • DomainNameOptions是仅用于传递配置的结构体,不是实际部署生成的域名资源实例,_apigatewayv2.ApiMapping要求传入的domain_name参数必须是已创建的域名资源引用
  • 你使用的是APIGW v1版本的REST API,直接将v1资源传递给v2的ApiMapping会无法识别,需要做一层属性转换
  • LambdaRestApi的domain_name参数本身支持传入DomainName实例,不需要强制使用DomainNameOptions,你之前的理解存在偏差

修正后的完整代码

首先显式创建APIGW v1的自定义域名资源,替换原来的DomainNameOptions配置:

# 显式创建APIGW v1自定义域名资源
domain_name = _apigateway.DomainName(
    self,
    "ApiCustomDomain",
    certificate=certificate,
    domain_name=custom_domain_name,
    mtls={
        "bucket": _s3.Bucket.from_bucket_arn(self, 'BucketByArn', mtls_bucket_arn),
        "key": mtls_bucket_key
    },
    security_policy=_apigateway.SecurityPolicy("TLS_1_2")
)

# 创建LambdaRestApi时直接传入已创建的domain_name实例
api_01 = _apigateway.LambdaRestApi(
    self,
    api_id,
    rest_api_name=rest_api_name,
    domain_name=domain_name,
    handler=measurements_fn,
    deploy_options=_apigateway.StageOptions(stage_name=stage),
    proxy=False
)

api_01.node.default_child.add_property_override(
    "DisableExecuteApiEndpoint",
    "true"
)

# 将v1的域名转换为v2可识别的域名实例
v2_domain = _apigatewayv2.DomainName.from_domain_name_attributes(
    self,
    "V2ApiDomain",
    domain_name=domain_name.domain_name,
    regional_domain_name=domain_name.regional_domain_name,
    regional_hosted_zone_id=domain_name.regional_hosted_zone_id
)

# 将v1的REST API转换为v2可识别的API实例
v2_api = _apigatewayv2.Api.from_api_attributes(
    self,
    "V2RestApi",
    api_id=api_01.rest_api_id,
    api_endpoint=api_01.url_for_path()
)

# 创建API Mapping
_apigatewayv2.ApiMapping(
    self,
    id='someId',
    api=v2_api,
    api_mapping_key='api/1.0',
    domain_name=v2_domain,
    stage=api_01.deployment_stage
)

注意事项

  • 确保你已经安装了aws-cdk.aws-apigatewayv2相关依赖包
  • 如果你的域名是边缘优化类型,需要将regional_*参数替换为边缘优化对应的属性值
  • API Mapping创建完成后,需要确保域名的DNS解析已经正确配置到APIGW的端点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:27:01