現在、GithubとAWS Codedeployを使用してnode2sアプリケーションをEC2インスタンスに配置する作業を自動化しようとしています。私はhereの指示にできるだけ近づけましたが、私はAfterInstallフックイベントで困ったことがあります。私はそうのようなAWS CLIを経由してデプロイを呼び出すAWSコード化を使用してnodejsインスタンスをデプロイするNPMの問題
version: 0.0
os: linux
files:
- source: /backend
destination: /home/ec2-user/signal
permissions:
- object:/
pattern: "**"
owner: ec2-user
group: ec2-user
hooks:
ApplicationStop:
- location: backend/app/deploy/stop.sh
timeout: 10
runas: ec2-user
BeforeInstall:
- location: backend/app/deploy/beforeinstall.sh
timeout: 1200
runas: ec2-user
AfterInstall:
- location: backend/app/deploy/afterinstall.sh
timeout: 1200
runas: ec2-user
ApplicationStart:
- location: backend/app/deploy/start.sh
timeout: 60
runas: ec2-user
ValidateService:
- location: backend/app/deploy/validate.sh
timeout: 60
runas: ec2-user
:
は、ここに私のYMLファイルである私はAfterInstall相と私の「afterinstallに達するまで
aws deploy create-deployment --application-name Signal --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name Production --description "Deployment" --github-location repository=githubusername/repository,commitId=ABCD123 --ignore-application-stop-failures
すべてが、正常に動作します。 sh 'が実行されます。
#!/bin/bash
cd /home/ec2-user/signal/app/
npm install
を、失敗した展開引き起こし、次のエラーログを生成します: そのファイルは次のようになります
エラーコード:はScriptFailed
メッセージ:指定された場所にスクリプト:バックエンドを/app/deploy/afterinstall.shユーザーec2-userが終了コード127で失敗したときに実行
LifecycleEvent - AfterInstall
Script - backend/app/deploy/afterinstall.sh
[stderr]/opt/codedeploy-agent/deployment-root/be9902d2-8af0-46fd-b186-23ead6bea5a4/d-SBW6YCLKC/deployment-archive/backend/app/deploy/afterinstall.sh: line 7: npm: command not found
私は私のEC2インスタンスにsshであれば0
しかし、tempディレクトリのいずれかに移動します。
/opt/codedeploy-agent/deployment-root/be9902d2-8af0-46fd-b186-23ead6bea5a4/d-SBW6YCLKC/deployment-archive/backend/app/deploy/
または
cd /home/ec2-user/signal/app/
と手動 'NPMインストール' を実行、または経由して私のスクリプトを実行します。 /afterinstall.shを実行すると、npmはうまく動作します。
なぜコードデプロイエージェントでは違いがありますか?私は 'runas:ec2-user'を使っているので、ec2ユーザとしてssh'edされているときと同じ権限があると思います。
私は間違っていますか? 多くの、多くのありがとうございます。
エラーメッセージが長いため、強調表示するだけの価値があります。最終的なエラーは次のとおりです: npm:コマンドが見つかりません –
'ec2-user'として動作していますが、' .bash_profile'や '.bashrc'などのログインスクリプトを実行していないと推測されていますので、npmパス上に。 –
'source/path_to_bash_profile'をafterinstall.shの上に置きます。 – Chris