15

CodeDeploy AWS デプロイ システムを使用してCodeshipを介して Amazon Web Serviceに自動的にデプロイされる Node.js アプリケーションがあります

展開プロセス中に、現在実行中の Web アプリケーションを停止するようにappspec.ymlに設定しました。デプロイが完了したら、Web アプリケーションを再度起動したいと考えています。

os: linux
files:
  - source: /
    destination: /var/www/app2
hooks:
  AfterInstall:
      - location: bash_scripts/stop_forever.sh
        runas: ec2-user
  ApplicationStart:
      - location: bash_scripts/start_forever.sh
        runas: ec2-user

ただし、展開中にこれらのスクリプトのいずれかを appspec.yml ファイルから正常に呼び出すことができませんでした。

AWS 展開エージェント ログに表示されている現在のエラーは次のとおりです。

Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop

これは、これらのスクリプトを別の場所で実行しようとしていた古いバージョンの appspec.yml ファイルを参照しているようです。デプロイされたパッケージの appspec.yml ファイルの内容を変更しましたが、このエラー メッセージはデプロイごとに同じままです。

上記の appspec.yml ファイルに加えて、次の変更も試みました。

  • 各フックのrunasパラメーターをリストしない
  • デプロイされたディレクトリ内のスクリプトを参照する
  • デプロイされたディレクトリ外のスクリプトを参照する
  • バージョンパラメータを最初に0.0に設定する

残念ながら、appspec.yml のトラブルシューティングに関しては、 AWS のドキュメントを除いて、オンラインにはほとんどありません。

私が間違っている非常に明白なことは何ですか?

4

2 に答える 2

18

AWS 開発者フォーラムに記載されている別の方法があり、それが望ましいと思います。

展開中に CLI ツールで --ignore-application-stop-failures オプションを使用すると、完全に機能しました。

フォーラムからの例:

aws deploy create-deployment --application-name APPLICATION --deployment-group-name GROUP --ignore-application-stop-failures --s3-location bundleType=tar,bucket=BUCKET,key=KEY --description "Ignore ApplicationStop failures due to broken script"

https://forums.aws.amazon.com/thread.jspa?threadID=166904

于 2015-01-23T21:46:44.593 に答える