Windows10下AWS Elastic Beanstalk部署.sh钩子权限被拒如何解决
问题解决步骤
- 修正Git权限标记
你之前执行的git update-index缺少必要参数,Windows环境下Git默认关闭Unix文件权限识别,就算在WSL中修改了本地文件权限,提交时也不会被Git记录。修改完本地文件权限后,执行以下命令强制Git保留可执行权限标记:
chmod +x .platform/hooks/postdeploy/01_runsomething.sh git update-index --chmod=+x .platform/hooks/postdeploy/01_runsomething.sh
执行git status确认文件有变更,提交修改后再重新部署。
- 修正Shell脚本语法错误
你当前的01_runsomething.sh的shebang行写法不规范,shebang仅能指定脚本解释器,不能直接拼接执行命令,修改脚本内容为:
#!/bin/sh python3 /var/app/current/print_helloworld.py
这里使用python3避免环境中Python别名异常,写入绝对路径/var/app/current/是AWS Elastic Beanstalk Python平台的默认代码部署目录,避免脚本执行时找不到目标Python文件。
- 确认打包部署规则
如果你是使用EB CLI本地打包部署而非Git推送部署,不要在Windows原生系统中修改、复制该shell文件,避免WSL下设置的权限属性被覆盖,打包前可在WSL中再次确认文件权限正常。
如果你的需求是定期执行脚本而非仅部署后执行一次,仅配置postdeploy钩子无法实现,需要额外在.platform目录下添加cron定时任务配置。
内容的提问来源于stack exchange,提问作者Patrick DLR
相关产品推荐
相关产品推荐

