You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Pipeline源阶段成功但EC2文件未更新问题咨询

可能的原因及排查方向

1. CodeDeploy部署组配置异常

  • 检查部署类型:如果用的是原地部署(In-place deployment),先在EC2实例上执行sudo service codedeploy-agent status确认代理状态,异常则重启sudo service codedeploy-agent restart——代理挂了会导致部署指令无法执行。
  • 核对实例匹配规则:确认部署组的实例标签/自动伸缩组和当前运行的EC2实例完全匹配,避免部署找不到目标机器。
  • 检查部署配置:查看是否设置了过高的失败阈值或暂停策略,导致部署卡在中间阶段未完成。

2. appspec.yml配置错误

  • 作为无构建阶段的部署,appspec.yml的文件复制规则是核心。确认根目录下的该文件配置正确,比如:
    version: 0.0
    os: linux
    files:
      - source: /
        destination: /var/www/html  # 替换为你的PHP应用实际部署目录
    
    要保证source指向源文件根目录,destination是EC2上的正确路径,且CodeDeploy代理对该目录有写入权限。
  • 排查钩子脚本:如果appspec.yml里配置了BeforeInstall、AfterInstall等钩子,检查脚本是否执行失败——钩子报错会直接终止部署。可以查看EC2实例上的/var/log/aws/codedeploy-agent/codedeploy-agent.log日志定位问题。

3. Pipeline工件传递问题

  • 确认源阶段输出的工件是否包含最新提交:虽然源阶段显示拉取成功,但可能打包时遗漏了更新文件。可以去Pipeline关联的S3存储桶下载最新工件包,检查是否包含新提交的内容。
  • 核对CodeDeploy阶段配置:确认Pipeline的CodeDeploy阶段关联的应用程序和部署组是正确的,避免部署到了其他环境的实例。

4. EC2实例本地问题

  • 清除PHP缓存:如果开启了OPcache等缓存机制,即使文件已更新,PHP服务可能仍读取旧缓存。尝试重启PHP服务(sudo service httpd restart或sudo service php-fpm restart)验证。
  • 检查文件权限:CodeDeploy代理默认以codedeploy用户运行,确认该用户对部署目录有读写权限。执行ls -l /var/www/html查看权限,必要时执行sudo chown -R codedeploy:codedeploy /var/www/html修改。

5. Pipeline触发流程不完整

  • 查看Pipeline执行历史:确认每次GitHub主分支推送后,CodeDeploy阶段是否被正常触发。如果只有源阶段执行,检查Pipeline的触发规则是否设为GitHub webhook (Push),同时核对GitHub仓库的webhook配置(Payload URL、Secret是否和Pipeline一致)。

内容的提问来源于stack exchange,提问作者chichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:55:57