Terraform创建ECS/ALB/CodeDeploy模板时提示无效ARN前缀错误
问题根因
报错由参数写法错误直接导致:你在codeDeploy.tf的listener_arns配置中,给Terraform资源引用加了双引号,Terraform会将引号内的内容识别为普通字符串,不会解析aws_alb_listener.front_end.arn对应的真实资源属性值,最终传给AWS API的是字面量字符串aws_alb_listener.front_end.arn,完全不符合AWS ARN必须以arn:为前缀的格式规则,因此触发「arn: invalid prefix」报错。
修复步骤
- 修正CodeDeploy部署组的监听器ARN配置
打开codeDeploy.tf,找到load_balancer_info -> target_group_pair_info -> prod_traffic_route块,将原有listener_arns配置:
listener_arns = ["aws_alb_listener.front_end.arn","aws_alb_listener.front_end2.arn"]
替换为(去掉资源引用外层的双引号,Terraform才会读取资源对应的真实ARN属性):
listener_arns = [aws_alb_listener.front_end.arn, aws_alb_listener.front_end2.arn]
- 修复ALB目标组的拼写笔误
你提供的ALB.tf中第一个aws_alb_target_group.app资源存在参数拼写错误:rotocol = "HTTP"缺少首字母p,需要修改为protocol = "HTTP",否则后续执行Terraform apply时会报未知参数错误。
验证方式
修改完成后先执行terraform plan,在输出的计划内容中找到aws_codedeploy_deployment_group.this资源的listener_arns参数,确认取值为以arn:aws:elasticloadbalancing开头的真实ALB监听器ARN,而非字面量字符串,即可确认配置正确,后续执行apply就不会再触发该类ARN格式错误。
你当前配置中蓝绿部署的流量切换逻辑、目标组绑定关系没有逻辑问题,修复上述两个问题后即可正常完成CodeDeploy和ECS蓝绿部署的集成。
内容的提问来源于stack exchange,提问作者Paul S-Pou
相关产品推荐
相关产品推荐

