AWS CDK Python为CodePipeline添加ECS部署阶段报region未定义错误
问题根因
该报错是AWS CDK v1.120.0版本的常见兼容问题,你直接将ApplicationLoadBalancedFargateService高阶构造的整体实例传给EcsDeployAction的service参数时,CDK底层jsii引擎无法正确解析到ECS服务关联的region属性,同栈新建Fargate服务时触发概率极高;引用已有ECS服务时资源属性已完成预解析,因此不会触发报错。
解决方案
按优先级依次尝试以下操作即可:
方案1(优先尝试,适配90%以上场景)
调整EcsDeployAction的入参,不要直接传入ApplicationLoadBalancedFargateService的整体实例,而是取其内部封装的真实ECS服务属性service:
deploy_action = codepipeline_actions.EcsDeployAction( action_name = 'DeployAction', service = fargate_service.service, # 仅修改这一行,取高阶构造内的实际ECS服务对象 image_file = codepipeline.ArtifactPath(build_output, 'imagedefinitions.json') )
修改后重新执行cdk synth验证是否报错即可。
方案2(方案1无效时补充)
显式为EcsDeployAction指定region参数,直接复用当前栈的region属性即可,无需硬编码:
deploy_action = codepipeline_actions.EcsDeployAction( action_name = 'DeployAction', service = fargate_service.service, image_file = codepipeline.ArtifactPath(build_output, 'imagedefinitions.json'), region = self.region # 追加region参数 )
方案3(版本兼容修复)
将CDK的核心包及各服务包版本升级到v1最终稳定版v1.204.0,该bug在后续版本中已被官方修复,升级后无需修改代码即可正常运行。
内容的提问来源于stack exchange,提问作者everestuar
相关产品推荐
相关产品推荐

