使用CodePipeline配合ECS EC2蓝绿部署时报Container.image非法字符错误
解决方案
- 首先删除
taskdef.json中的taskDefinitionArn字段:该字段为AWS控制台导出任务定义时自动生成的字段,蓝绿部署场景下CodePipeline会自动生成新的任务定义ARN,保留该占位符会导致配置解析异常,连带镜像字段识别失败。 - 核对CodePipeline ECS蓝绿部署动作的占位符配置:确认动作配置中「镜像输入工件的占位符名称」与
taskdef.json中写的<IMAGE1_NAME>完全一致,大小写完全匹配,占位符不匹配会导致镜像URI没有被正确替换,直接将<IMAGE1_NAME>字符串作为镜像地址传入,触发非法字符报错。 - 清理
taskdef.json中的冗余null字段:从AWS控制台导出的任务定义会自带大量值为null的非必填字段(如你配置中的ipcMode、executionRoleArn、logConfiguration等),不需要的字段直接删除即可,不要留null值,避免CodeDeploy解析时出现兼容问题。 - 检查YAML文件格式:确认
appspec.yaml没有空格、tab混用的缩进问题,YAML格式错误会导致<TASK_DEFINITION>占位符未被替换,进而导致整个任务定义解析异常。 - 核对上游构建输出的镜像URI:确认镜像URI没有多余的空格、换行、特殊符号,格式符合ECR镜像规范
账户ID.dkr.ecr.区域.amazonaws.com/仓库名:标签。
内容的提问来源于stack exchange,提问作者hoangquyy
相关产品推荐
相关产品推荐

