AWS CodePipeline中appspec.yml未执行脚本且无报错的问题
问题排查与解决
核心问题1:appspec.yml 缩进错误
YAML 语法对缩进极其敏感,你的 hooks 块下的各个钩子(ApplicationStop、BeforeInstall 等)没有正确缩进,导致 CodeDeploy 无法识别这些钩子配置,自然不会执行脚本。
正确的缩进格式应该是:
version: 0.0 os: linux files: - source: / destination: /home/ubuntu file_exists_behavior: OVERWRITE hooks: ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root BeforeInstall: - location: scripts/deploy_server.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root
核心问题2:脚本 Shebang 错误
你的脚本开头写的是 #!bin/bash,缺少了根路径的 /,系统无法找到 bash 解释器,会导致脚本无法执行。必须改为:
#!/bin/bash sudo systemctl stop HYPNOS.service sudo systemctl disable HYPNOS sudo systemctl daemon-reload
其他排查点
- 脚本权限:确保脚本拥有可执行权限,在构建阶段添加命令
chmod +x scripts/*.sh,或者本地修改权限后再提交代码。 - 查看部署日志:目标服务器上的
/opt/codedeploy-agent/deployment-root/目录下会有对应部署的详细日志,即使控制台没有报错,日志里也会记录脚本执行的具体问题,比如路径找不到、权限不足等。
内容的提问来源于stack exchange,提问作者Rehan Akhtar
相关产品推荐
相关产品推荐

