使用Terraform更新非Terraform创建的ALB的443端口监听器报错问题咨询
解决方案
你当前的Terraform配置将aws_lb_listener.front_end定义为新创建资源,而目标ALB的443端口监听器已提前存在、不在Terraform状态文件的管理范围内,因此执行apply时会触发资源冲突报错,可通过以下步骤解决:
- 第一步:获取已有443监听器的ARN
可通过AWS CLI执行命令获取:aws elbv2 describe-listeners --load-balancer-arn <替换为你的ALB ARN> --query 'Listeners[?Port==`443`].ListenerArn' --output text - 第二步:将已有监听器导入Terraform状态文件
你将监听器定义在alb模块内部,因此资源地址为module.alb.aws_lb_listener.front_end,执行导入命令:terraform import module.alb.aws_lb_listener.front_end <替换为上一步获取的监听器ARN> - 第三步:校验配置差异
执行terraform plan,确认输出中无资源新建/销毁操作,仅展示你预期的配置更新项(如证书替换、默认响应规则修改等),如有无关差异可调整变量配置对齐实际资源属性。 - 第四步:执行更新
确认plan结果符合预期后,执行terraform apply即可完成已有监听器的配置覆盖。
额外方案:如果业务允许监听器短暂中断,你也可以先在AWS控制台手动删除已有的443端口监听器,再直接执行
terraform apply新建符合配置的监听器。
内容的提问来源于stack exchange,提问作者Eveline Ribka Nelwan
相关产品推荐
相关产品推荐

