EC2インスタンス起動時にスクリプトを実行する方法とか

EC2インスタンス起動時にスクリプトを実行する方法とかメモ。



EC2サーバーの起動時にスクリプトを実行する方法


EC2サーバーの起動時にスクリプトを実行する方法は主に以下の2つ。


/etc/init.dに登録する

普通のdaemonと同じように、/etc/init.dにスクリプトを置いて、chkconfig --addして自動起動するようにすると、EC2インスタンスの起動時に登録したスクリプトを実行できる。


User Dataから任意のスクリプトを実行する

User Dataにスクリプトを記述しておくとcloud-init経由でEC2インスタンスの起動時にスクリプトを実行できる。


参考リンク

自分でインストールしたサービスを chkconfig --add するためには

ec2起動時にスクリプトを実行する

EC2で起動時やterminate時にシェルを実行する

EC2: User Dataを使ってインスタンス起動時の処理を自動化する



EC2インスタンスをコマンドから起動・終了する方法


EC2 API Toolsを使えば実現できる。Amazon LinuxにはAPI Toolsが最初からインストールされている。後は以下の3つの環境変数を設定するだけ。最新のやり方だと証明書は不要。


export AWS_ACCESS_KEY=aaaaaaaaaaaaaaaaaaa
export AWS_SECRET_KEY=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

# 東京リージョンの場合
export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com

# 上記の環境変数が設定されていれば実行できる
ec2-describe-regions
ec2-describe-instances
ec2-describe-instances i-aaaaaaaa | grep '^INSTANCE' | awk '{print $2,$6,$14}'

# インスタンスの起動
ec2-stop-instances  i-aaaaaaaa

# インスタンスの停止
ec2-start-instances  i-aaaaaaaa

参考リンク

Amazon EC2をコンソールからオペレーションできるEC2 API Toolsをインストールしてみた

EC2インスタンスをコマンドラインツールで起動・終了する 【Amazon EC2】

環境変数を設定するには

[Amazon][EC2] コマンドラインでEC2インスタンスを起動停止する

EC2 API ToolsでアクセスキーIDとシークレットアクセスキーを使う



EC2インスタンスを負荷状況に合わせて自動で起動する方法


Auto Scalingを使えば、負荷状況に合わせてインスタンスを自動で起動、破棄できる。ELB(Elastic Load Balancer)と組み合わせれば、サーバーへのアクセスもうまい具合に分散させることができる。


Load Balancingが必要なくて単純にインスタンスの増減をしたいだけなら、API Toolsのコマンドをcronに登録するだけで実現できる。


参考リンク

Amazon EC2編~ELBでAuto Scalingをしてみよう!パート1~

Amaon EC2~ELB設定編~

Auto Scalingの薄い説明書を作ってみた



その他


EC2インストール起動時の処理という意味ではAWS CloudFormationというツールもある。


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール