Scale UpパターンをAWS SDK for Rubyで突貫工事した
Excelとシェルスクリプトぐらいしか芸がないのでもう一度ノージョブもしくは学生になりたい。 スタディしたい。 と思っている私ですこんばんは。
このあたりと格闘してScale Upパターン書いてみました。
instance typeの変更方法がさっぱりわからなくて辛かった・・・
色々と勉強不足。
EC2インスタンスにEIPを割り当てていることが前提としてます。
ENICは未対応です。
停止前のEIP取得->停止->インスタンスタイプ変更->起動->EIP戻し
となっております。
#!/usr/bin/env ruby require 'aws-sdk' instance_id = ARGV[0] instance_type = ARGV[1] ec2 = AWS::EC2.new( :access_key_id => '<your_access_key>', :secret_access_key => '<your_secret_access_key>', :region => 'ap-northeast-1' ) i=ec2.instances["#{ARGV[0]}"] if i.exists? == false puts instance_id + "なんて名前のインスタンスはないよ" exit end if i.instance_type == instance_type puts "おなじインスタンスタイプだよ。スケールアップもダウンもできないよ" exit end eip = i.ip_address if i.status == :stopped ec2.client.modify_instance_attribute(:instance_id => "#{instance_id}", :attribute => "instanceType", :value => "#{instance_type}") elsif i.status == :running i.stop while i.status != :stopped sleep(2) end ec2.client.modify_instance_attribute(:instance_id => "#{instance_id}", :attribute => "instanceType", :value => "#{instance_type}") end i.start while i.status != :running sleep(2) end i.associate_elastic_ip(eip)