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

AWS CodeDeploy脚本无法找到ROOT.war源文件问题求助

问题排查与解决方案

1. 钩子执行顺序是核心问题

AWS CodeDeploy的钩子执行顺序是固定的:
ApplicationStop → BeforeInstall → 文件复制(files段配置) → AfterInstall → ApplicationStart

你的BeforeInstall阶段调用的scripts/copy_server脚本试图访问/home/ubuntu/artifacts/ROOT.war,但这个时候CodeDeploy还没执行files段的文件复制操作,目标路径下根本没有这个文件,自然找不到。

解决方法:
把需要访问已复制文件的脚本移到AfterInstall阶段,或者调整脚本逻辑,不要在BeforeInstall里依赖还未复制的文件。

2. 压缩包结构验证

确认你上传到S3的压缩包结构是否符合预期:

  • 解压压缩包后,应该直接在根目录看到ROOT.war、appspec.yml和scripts文件夹,而不是被嵌套在某个子文件夹里(比如my-app/ROOT.war这种结构)。
  • 如果压缩包是嵌套结构,比如文件都在my-app文件夹下,你需要修改files的source路径为./my-app/ROOT.war,否则CodeDeploy找不到源文件。

验证方式:
下载S3里的压缩包到本地解压,检查文件层级是否正确。

3. 目标目录存在性确认

虽然你排除了权限问题,但可以确认/home/ubuntu/artifacts/目录是否存在:

  • 如果目录不存在,CodeDeploy默认会自动创建,但如果有特殊权限配置导致创建失败,也会出现文件无法写入的情况。
  • 可以在BeforeInstall阶段添加脚本先创建目标目录:
    mkdir -p /home/ubuntu/artifacts/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:07:07