0

CodeDeploy を使用して、Tomcat がインストールされた AWS Beanstalk サーバーにファイルをデプロイしようとしています。appspec.yml が私の .sh スクリプトを呼び出し、mvn installコマンドが実行されたときに発生する例外を除いて、すべてが適切に構成されています。私が想像したすべてのアクセス許可の組み合わせ (および私が見つけたすべての StackOverflow の回答) を試しましたが、何も機能しませんでした。

Cannot create resource output directory: /opt/codedeploy-agent/deployment-root/f953d455-9712-454b-84b0-2533cf87f79a/d-3UFCDLD0D/deployment-archive/target/classes

また、.sh スクリプトが実行される前に appspec.yml のファイル セクションが実行されることも期待していました。次のように機能しているはずです。

  1. appspec.yml はすべてのファイルを webapps フォルダーに移動します
  2. build.sh が実行される
  3. mvn が実行され、.war ファイルが作成されます
  4. build.sh はいくつかのクリーンアップを行います

appspec.yml (他にも複数試しました)

version: 0.0
os: linux
files:
   - source: /
     destination: /var/lib/tomcat8/webapps
permissions:
   - object: /opt/codedeploy-agent/deployment-root
     pattern: "**"
     owner: ec2-user
     group: root
     mode: 755
     type:
       - directory
   - object: /var/lib/tomcat8/webapps
     pattern: "**"
     owner: ec2-user
     group: root
     mode: 755
     type:
       - directory
hooks:
   BeforeInstall:
    - location: scripts/build.sh
      runas: ec2-user

build.sh

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がアクセス許可を持たずにフォルダーターゲットを作成しようとすることは、例外から明らかです。したがって、問題は、そもそもなぜこのフォルダーでそれを実行しようとしているのか、次に適切なアクセスを取得する方法です。

4

1 に答える 1