EC2インスタンスの起動後にbashスクリプトを実行します


19

別のインスタンスをリモートで起動するスクリプトがEC2インスタンスにあります。

このインスタンスが完全にロードされたら(ブートの完了)、bashスクリプトを自動的に実行したいのですが、これを行う最良の方法は何でしょうか?

すべてを完全に起動する必要があります。基本的に、bashスクリプトは画像変換スクリプトを実行します(ImageMagickを使用し、「wget」コマンドを数回実行します)

現在、スクリプトは次の場所にあります。

/home/root/beginProcess.sh

そして、私はそれを手動で起動することができます

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

また、これにEBSボリュームが添付されています。これが役立つ場合は、ありがとうございます。

回答:


26

user-dataオプションを使用することをお勧めしますec2-run-instances。VMに何らかのスクリプトを与えて、最初の起動時に実行します。ubuntuまたはdebianを使用している場合は、cloud-initを使用できます。これにより、プロセスが洗練されます。cloud-initを使用している場合、[runcmd]構成ファイルのセクションを使用して、ブート後に実行する任意のコマンドを指定できます。

ユーザーデータページを提供してくれたSFユーザーEric Hammondに感謝します。彼のサイトをチェックしてください-AWSに豊富な情報があります。

編集:読み直した後、最初のブートでコマンドを実行するか、すべてのブートでコマンドを実行するかは明確ではありません。上記の手順は、初期ブートにのみ適用されます。ブートごとにコマンドを実行したい場合、いくつかのオプションがあります@reboot-cronディレクティブを介してコマンドを実行するか/etc/rc.local、システムがブートするたびに実行されるスクリプトをに追加することができます。


1
回答に感謝します。明確にするために、システムが起動するたびに実行してほしいと思っていたので、/etc/rc.localすばらしい動作をしています。乾杯
SSH

9

cloud-initパッケージがインストールされたAMI (Amazon LinuxやUbuntuなど)を使用している場合、bashスクリプト(#!で始まる)をuser-data-fileとして渡すだけで、最後に自動的に実行されます起動プロセス。

たとえば、次のように簡単にできます。

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

Amazon LinuxやUbuntuなどの主要なEC2 AMIで利用できるようになったユーザーデータスクリプトの概念を紹介した記事は次のとおりです。http//alestic.com/2009/06/ec2-user-data-scripts

残念ながら、RHEL AMIを使用したいようです。私はそのコピーを実行しましたが、初回起動時にcloud-initまたは実行中のユーザーデータスクリプトへの参照を見つけることも、同じ作業のテストを行うこともできませんでした。

このためだけにLinuxディストリビューションを切り替える必要があるとは言っていませんが、Amazon LinuxはRHELに基づいているため、うまくいくかもしれません。

初めて動作しない場合にユーザーデータスクリプトをデバッグするのに役立つかもしれない私が書いた記事は次のとおりです。http : //alestic.com/2010/12/ec2-user-data-output


オフトピックですが、このような非常に貴重なものを作成してくれてありがとう。3つの歓声。
ダニエルジメネス14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.