LoginSignup
2
1

More than 5 years have passed since last update.

【AWS】 EC2インスタンスをJenkinsで自動起動&停止

Last updated at Posted at 2015-11-02

AWSでコストダウンするために、Jenkinsのジョブで自動停止と起動ができるようにしました。

事前準備

EC2の設定で以下のタグを追加

  • Stop
  • Start

起動

以下コマンドを朝の8時に起動するように設定します。

start-instances.sh
aws ec2 start-instances --region=ap-northeast-1 --instance-ids `aws ec2 describe-tags --region ap-northeast-1 --filters Name=resource-type,Values=instance Name=key,Values=Start Name=value,Values=true --query 'Tags[*].ResourceId' --output text`

※尚、PublicインスタンスでRoute53又はELBを利用している場合はインタンス起動後に以下の処理が必要です。

  • Route53:レコードへのPublicIP再設定
  • ELB:ELB再設定

過去記事を参考に設定して下さい。

参考:http://qiita.com/3utama/items/5a0211e6bad7380b8a27

停止

以下のコマンドを19時に起動するように設定します。

stop-instanecs.sh
aws ec2 stop-instances --region=ap-northeast-1 --instance-ids `aws ec2 describe-tags --region ap-northeast-1 --filters Name=resource-type,Values=instance Name=key,Values=Stop Name=value,Values=true --query 'Tags[*].ResourceId' --output text`

スポットインスタンスの場合は停止が出来ないので、terminateします。

terminate-instance.sh
aws ec2 terminate-instances --region=ap-northeast-1 --instance-ids `aws ec2 describe-tags --region ap-northeast-1 --filters Name=resource-type,Values=instance Name=key,Values=Stop Name=value,Values=terminate --query 'Tags[*].ResourceId' --output text`

問題

Route53へのAPIコールは通常5call/秒が上限に設定されているため、Publicインスタンスの数が5を超える場合、以下のエラーメッセージが返却されて接続できなくなります。

The request was rejected because Route 53 was still processing a prior request.

そのため、起動時はInstanceIdを取得後、1つずつ実行するように修正しました。

start-instances.sh
for instanceid in $( aws ec2 describe-tags --region ap-northeast-1 --filters Name=resource-type,Values=instance Name=key,Values=Start Name=value,Values=true --query 'Tags[*].ResourceId' --output text ); do   
    aws ec2 start-instances --region=ap-northeast-1 --instance-ids ${instanceid}
    sleep 5s
done

無事解決しました!

おまけ

AWS Cli でフィルターかけるときに、ResouceTypeなどのキャメルケースの場合はresource-typeの用にスネークタイプに置き換える必要があります。
ただしStartのような単語で頭文字のみ大文字の場合はそのまま!なんでや!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1