如何在AWS CDK中为API Gateway V1预存自定义域名切换端点映射?
问题描述
尝试使用AWS Python CDK为已存在的自定义域名切换端点映射,实现API Gateway V1(REST类型)的蓝绿部署:先将blue.api.example.com对应的API网关映射到api.example.com,部署green.api.example.com对应的新API网关后,将映射切换为该新网关。
使用的CDK代码如下:
main_domain_name = apigw.DomainName( self, "construct-id", certificate=certificate, domain_name="api.example.com" ) main_domain_name.add_base_path_mapping(api_gateway) # api-gateway has domain_name e.g. blue.api.example.com
重新部署新栈时出现以下错误:
The stack named xxxx-xxxxx failed to deploy: UPDATE_ROLLBACK_COMPLETE: Resource handler returned message: "Base path already exists for this domain name (Service: ApiGateway, Status Code: 409, Request ID: XXX)" (RequestToken: XXXX, HandlerErrorCode: AlreadyExists)
曾尝试将映射传入DomainName构造函数,仍遇到相同问题。询问是否有原生CDK的解决方法,原本考虑通过自定义资源调用AWS SDK手动删除再添加映射,但更希望使用原生CDK实现。
解决方案(2024年1月更新)
已通过在CDK中使用自定义资源调用AWS SDK解决该问题。问题根源在于CDK和CloudFormation目前仅支持域名基础路径映射的「添加」操作,而AWS SDK和CLI支持「更新」「删除」操作。
内容的提问来源于stack exchange,提问作者SamBrick
相关产品推荐
相关产品推荐

