EC2インスタンス起動時にスクリプトを実行する方法とかメモ。
EC2サーバーの起動時にスクリプトを実行する方法
EC2サーバーの起動時にスクリプトを実行する方法は主に以下の2つ。
/etc/init.dに登録する
普通のdaemonと同じように、/etc/init.dにスクリプトを置いて、chkconfig --addして自動起動するようにすると、EC2インスタンスの起動時に登録したスクリプトを実行できる。
User Dataから任意のスクリプトを実行する
User Dataにスクリプトを記述しておくとcloud-init経由でEC2インスタンスの起動時にスクリプトを実行できる。
参考リンク
自分でインストールしたサービスを chkconfig --add するためには
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~
その他
EC2インストール起動時の処理という意味ではAWS CloudFormationというツールもある。