Elastic Beanstalk部署失败求助:新版本无法正常部署
Elastic Beanstalk部署失败持续回滚?试试查这个隐藏日志!
我之前也碰到过几乎一模一样的棘手问题——Elastic Beanstalk环境之前几十次部署都正常,突然不管传什么版本(哪怕是最简静态HTML)都会触发回滚,常规日志全没有效信息,那种无力感太懂了!结合你的场景,分享下排查思路和最终解决办法:
先明确你的核心困境
- 部署任何新版本都会失败回滚,控制台提示「实例上应用版本不匹配、命令执行超时超56分钟」
- EB控制台的请求日志是空的,EC2系统日志只停留在上一个正常版本
- 已配置的CloudWatch日志里,
/var/log/eb-activity.log、Apache的access/error日志全为空,只有/environment-health.log有版本不匹配的提示 - 尝试了改包名、销毁重建实例/环境、部署最简代码,通通无效
常规手段失效?去看CloudFormation的底层日志
EB的部署流程其实依赖CloudFormation的cfn-init工具来完成实例的配置和应用部署,这些底层执行日志不会默认暴露在EB的常规日志里,这就是你之前看不到有效错误信息的原因!
你最后通过SSH登录实例找到的/var/log/cfn-init-cmd.log就是破局点——这里会记录所有CloudFormation执行的命令细节,包括卡住的原因。你提到日志里显示命令因等待输入超时且无错误提示,这是典型的「自动化部署遇到交互式命令」的问题:
具体排查和解决步骤
- SSH登录到EC2实例:通过EB控制台的「连接」功能或者本地SSH密钥,登录到你的t2.medium实例
- 查看核心日志:执行命令查看
cfn-init-cmd.log的内容:cat /var/log/cfn-init-cmd.log - 定位卡住的命令:找到日志里超时的那条命令,通常是需要用户手动确认的操作(比如没有加
-y参数的包安装命令,或者自定义脚本里的read交互) - 修复交互式命令:
- 对于yum/apt的安装命令,加上非交互参数:
yum install -y [包名]或apt-get install -y [包名] - 检查
.ebextensions目录下的配置文件,所有容器命令都要确保是非交互式的 - 如果是自定义启动脚本,删除需要输入的逻辑,或者提前通过环境变量传入参数
- 对于yum/apt的安装命令,加上非交互参数:
额外提醒
哪怕之前这些配置一直正常,也有可能因为Amazon Linux系统更新、EB平台版本升级,导致原本不需要交互的命令突然弹出确认提示,卡住整个部署流程。下次碰到这种无厘头的回滚,别忘深入实例查CloudFormation相关的日志!
内容的提问来源于stack exchange,提问作者Basile Durst
相关产品推荐
相关产品推荐

