AWS Linux CodeDeploy权限问题(w.Bitbucket、Tomcat、Shell脚本)
我正在尝试使用CodeDeploy将文件部署到安装了Tomcat的AWS Beanstalk服务器。除了appspec.yml调用my.sh脚本并执行mvn install命令时发生的异常之外,所有内容都配置良好。我尝试了我想象的所有权限组合(以及我找到的每个StackOverflow答案),但都没有成功AWS Linux CodeDeploy权限问题(w.Bitbucket、Tomcat、Shell脚本),linux,amazon-web-services,permissions,aws-code-deploy,Linux,Amazon Web Services,Permissions,Aws Code Deploy,我正在尝试使用CodeDeploy将文件部署到安装了Tomcat的AWS Beanstalk服务器。除了appspec.yml调用my.sh脚本并执行mvn install命令时发生的异常之外,所有内容都配置良好。我尝试了我想象的所有权限组合(以及我找到的每个StackOverflow答案),但都没有成功 Cannot create resource output directory: /opt/codedeploy-agent/deployment-root/f953d455-9712-454
Cannot create resource output directory: /opt/codedeploy-agent/deployment-root/f953d455-9712-454b-84b0-2533cf87f79a/d-3UFCDLD0D/deployment-archive/target/classes
我还希望在执行.sh脚本之前执行appspec.yml的files部分。它应该是这样工作的:
export LANG=en_US.UTF-8
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "Script path: $SCRIPTPATH"
PROJECT_SOURCE_DIR=$SCRIPTPATH/../
cd $PROJECT_SOURCE_DIR
mvn clean install
cd $PROJECT_SOURCE_DIR/target
ls -a
for file in *.war; do
mv $file /usr/share/tomcat8/webapps/ROOT.war
done;
rm -rf $PROJECT_SOURCE_DIR/target
rm -rf $SCRIPTPATH
从异常中可以明显看出,maven试图在没有权限的情况下创建文件夹目标。所以问题是,为什么它首先要在这个文件夹中执行它,然后如何获得正确的访问权。- 解决此问题的方法是在运行“mvn clean install”而不是PROJECT\u SOURCE\u DIR之前添加命令以更改到适当的目录
- 安装是AWS CodeDeploy agent将修订文件从临时位置复制到最终目标文件夹的生命周期事件。此事件是为AWS CodeDeploy代理保留的,不能用于运行脚本。相关文件如下:
- 出现错误的目录实际上位于部署归档目录下,如下所示:
- 出现错误的原因是build.sh脚本正在当前目录下运行,该目录需要root权限,并且scripts/build.sh仅具有ex2用户权限,这导致了权限问题
- 解决此问题的方法是在运行“mvn clean install”而不是PROJECT\u SOURCE\u DIR之前添加命令以更改到适当的目录
- 安装是AWS CodeDeploy agent将修订文件从临时位置复制到最终目标文件夹的生命周期事件。此事件是为AWS CodeDeploy代理保留的,不能用于运行脚本。相关文件如下:
- 出现错误的目录实际上位于部署归档目录下,如下所示:
- 出现错误的原因是build.sh脚本正在当前目录下运行,该目录需要root权限,并且scripts/build.sh仅具有ex2用户权限,这导致了权限问题
export LANG=en_US.UTF-8
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "Script path: $SCRIPTPATH"
PROJECT_SOURCE_DIR=$SCRIPTPATH/../
cd $PROJECT_SOURCE_DIR
mvn clean install
cd $PROJECT_SOURCE_DIR/target
ls -a
for file in *.war; do
mv $file /usr/share/tomcat8/webapps/ROOT.war
done;
rm -rf $PROJECT_SOURCE_DIR/target
rm -rf $SCRIPTPATH