AWSのAutoScalingでインスタンスを起動する際にコマンドを実行したい

More than 1 year has passed since last update.

タイトルの通り、AWSのAutoScalingでスケールアウトさせる際に、起動するインスタンス上でコマンドを実行したい場合についてです。

インスタンスを起動する際に、ソースコードを最新にしたいとか、webサーバーのプロセスを立ち上げたいと言う時ありますよね。

以下の前提のもと、ここでは最もシンプルであろうという方法を記載していきます。

前提


  • 既に利用可能なAMIを作成済み

  • AutoScalingグループも作成済み

  • ブラウザ上のマネジメントコンソールから設定

では、AWSのEC2サービスの中の起動設定の作成を行います。

1.AMIの選択、2.インスタンスタイプの選択を済ませ、3.詳細設定まで進みます。

スクリーンショット 2017-08-16 0.28.36.png

ここのユーザーデータの項目にインスタンス起動時に渡してあげたいコマンドを記載すればOKです。

気を付けなければいけない点は


  • 渡されたコマンドはrootユーザーとして実行される

  • インタラクティブな操作をコマンドの実行途中ではさむようなものは実行できない

です。

このユーザーデータのテキストボックス内に下記のような感じで記述してしまえば完了です。

#!/bin/bash

cd /path/to/myproject
sudo -u ec2-user /usr/bin/git pull origin master
sudo -u ec2-user /usr/local/bin/gunicorn myproject.wsgi -D

ユーザーデータは様々な形式で渡せるようです

https://cloudinit.readthedocs.io/en/latest/topics/format.html