2017-07-19 27 views
2

AWS EC2(Amazon Linux)の起動設定では、以下のような一連のコマンドシーケンスを持つユーザデータを設定しました。インスタンスの起動時にAWS EC2起動設定ユーザデータ - コマンドが見つかりません

#!/bin/bash -exv \n", 
"#Execute Init resource\n", 
"whoami\n", 
"pwd\n", 
"npm -v\n", 

、ユーザデータが「WHOAMIは」クラウドINIT-Output.logです正しい出力を与えているが、それは、「NPMコマンドのようなエラーメッセージでNPMコマンドのエラーを与えているような微細かつネイティブコマンドを実行しています見つかりません"。

しかし、私はインスタンスにsshしていくつかのnpmコマンドを実行しようとするとうまくいきます。

私はこれを解決するために私を導くことができますか?

おかげ

+0

あなたはどのAMIを使用していますか? – danielbh

+0

'npm'へのフルパスを与えることができますか? – helloV

+0

このユーザーデータをCloudFormationテンプレートの一部として含めていますか、それともEC2起動ウィザードで指定していますか? –

答えて

6

ユーザデータがrootとして実行されます。 npmへのパスがrootPATHにない可能性があります。フルパスをnpmに指定してください。正常に動作するはずです。

sshは、npmがあなたのPATHで利用可能なために動作する理由です。

+0

これが正しい理由です。私はsshについての部分を逃した。私の答えを削除しました。 –

+0

ありがとうございます@helloV。私はこれを試してみる。 sshを使って同じユーザが利用できる間に、PATHがインスタンス起動時に 'root'ユーザに利用できないのを理解するのを助けてくれますか? –

+0

こんにちは@helloVとすべて、ちょうどその更新、私はPATHを印刷するステートメントで私のユーザーデータのスクリプトを更新しました。つまりecho $ PATHと私がcloud-init-output.logを調べると、 "/ sbin:/ usr/sbin:/ bin:/ usr/bin"と出力され、ssh端末で "echo $ PATH "私は" /root/.nvm/versions/node/v6.11.1/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin "と見ることができました。 –

0

@ helloVの回答がうまくいきます。 @helloVに感謝します。 でも、インスタンスの起動時にrootユーザーのPATHに関する問題を見つけようとしましたが、AMIのNVM(ノード・バージョン・マネージャ)パッケージのnvm.shがPATHを拡張して 'npm'と 'node' 。

このnvm.shは.bash_profileのからトリガーされる - > .bashrcの

ことの一つは、rootユーザの.bash_profileのは、インスタンスの起動時にユーザーデータスクリプトの実行前に実行されなかったことが明らかになりました。だから、私のユーザデータスクリプトで.bash_profileをソースにして、ユーザデータスクリプトのnpmコマンドが正常に動作しています。

詳細については、https://github.com/creationix/nvm/issues/381 で、nvm.shを見つけました。Ben Creasyに感謝します。

これが役に立ちます。

関連する問題