Bitbucket流水线CodeDeploy部署EC2失败,求AWS排查指导
AWS端排查诊断与配置检查指导
一、EC2实例基础状态验证
- 确认EC2实例处于运行中状态,通过CloudWatch监控查看CPU、内存、磁盘使用率,排查是否存在资源耗尽(比如磁盘满、内存不足)导致部署卡住。
- 登录EC2实例,查看系统日志(
/var/log/messages或/var/log/syslog),检查是否有系统级错误(如依赖缺失、进程崩溃)影响部署。
二、CodeDeploy Agent 状态与日志排查
- 在EC2实例上执行命令
sudo service codedeploy-agent status,确认Agent是否运行。若未运行,启动并设置自启:sudo service codedeploy-agent start sudo systemctl enable codedeploy-agent - 查看Agent核心日志
/var/log/aws/codedeploy-agent/codedeploy-agent.log,重点关注:- 是否无法从S3拉取部署包(权限/网络问题)
- AppSpec.yml脚本是否语法错误或执行失败
- 部署脚本是否无限挂起(如等待用户输入、依赖安装超时)
三、CodeDeploy 部署配置检查
- 调整部署组健康检查超时时间:默认5分钟可能不足以完成部署,可延长至10分钟,同时确认健康检查类型(EC2状态检查/自定义脚本)匹配应用场景。
- 检查部署组的部署配置:确认单实例部署的最小健康百分比设置合理,避免因实例健康判定严格导致部署终止。
- 验证
appspec.yml文件:- 确认部署包路径指向正确的S3对象
- 检查
hooks部分脚本是否可执行、有无明确退出逻辑 - 确保
files复制路径在EC2实例上有写入权限
四、IAM权限验证
- 检查EC2实例的IAM角色(实例配置文件)是否包含
AmazonS3ReadOnlyAccess及CodeDeploy相关权限,确保Agent能拉取S3包并与CodeDeploy通信。 - 确认CodeDeploy服务角色拥有访问EC2、S3及执行部署操作的完整权限。
五、网络连通性检查
- 在EC2实例上测试S3访问:
curl https://<你的Bucket名>.s3.<区域>.amazonaws.com/<部署包文件名>.zip,确认能正常下载。 - 检查安全组是否允许EC2实例出站HTTPS(443)流量到CodeDeploy服务端点,若用VPC,确认配置了S3/CodeDeploy VPC端点或NAT网关。
六、手动部署测试
- 直接在CodeDeploy控制台触发部署,使用相同S3包,验证是否能成功,排除Bitbucket流水线的影响。
- 在EC2实例上手动执行AppSpec.yml中的脚本,排查是否存在脚本卡顿或报错。
内容的提问来源于stack exchange,提问作者Yossi G.
相关产品推荐
相关产品推荐

