[新機能]Auto Scaling Groupからインスタンスを取り外せるようになりました!
こんにちは。望月です。
今朝方、Auto Scaling Groupに複数の大きな機能追加がありました!その内の一つが、既存のAuto Scaling Groupで起動中のインスタンスを、Auto Scling Groupの管理外にすることができる、という機能です。早速試してみました!
背景
Auto Scalingを構成する要素に、Launch ConfigurationとAuto Scaling Groupの2つが存在します。ものすごいざっくりと説明すると、Launch Configurationでは「インスタンスをどういった設定で起動するか」ということを設定します。Auto Scaling Groupは、「どのLaunch Configurationから何台を起動するか」を設定します。
今までは一度Auto Scalingで起動したインスタンスは、常にAutoScalingの監視下に置かれることになっていましたが、これには不便な点がありました。例えばメンテナンス等で一度インスタンスをStopしてしまうと、その時点でAutoScalingの機能によりStopしたインスタンスが自動的にTerminateされ、新しいインスタンスが起動してしまいます。
このアップデートにより、一度Auto Scaling Groupから外してしまえば、勝手にTerminateされることがなくなるわけです。
試してみた
2014/07/31 JST 09:00時点では、この機能に対応しているクライアントはAuto Scaling Command Line Tool : Developer Tools : Amazon Web Servicesのみのようです。リンク先のページからzipファイルをダウンロードします。初期設定方法は解凍したディレクトリ内のreadme.txtに記載されています。
さて、実験のため単一のAuto Scaling Groupから4台起動された状態を作りました。
この状態で、先ほどインストールしたCommand Line Toolsのas-detach-instancesを利用して、そのうち一台をAutoScalingGroupから切り離してみます。パラメータとして渡して上げる必要があるのは、
- AutoScalingGroupの名前
- Instance ID
- Desired Capacityを、detachしたインスタンス数ぶんだけ減らすかどうか
の3つです。
では、このうち1台をAutoScaling Groupから切り離してみます。
$ as-detach-instances i-59c0fb5f \ --auto-scaling-group sample-scaling-group \ --decrement-desired-capacity \ --I <accessKey> --S <secretKey> --region ap-northeast-1 INSTANCE fbb307dc-5e7b-4175-9514-a47e33b0ae8b InProgress At 2014-07-30T23:54:43Z instance i-59c0fb5f was detached in response to a user request, shrinking the capacity from 4 to 3.
Auto Scaling配下のインスタンスが3台になったようです。Management Consoleから確認してみましょう。
ちなみに、このAPIが増減させるのはDesired Capacityの値だけですので、AutoScalingGroupのMin=Desiredだとコマンド実行が失敗します。
余談ですが、Auto Scalingから外したインスタンスを再びAutoScalingに加える事もできます。as-attach-instancesコマンドを利用して、先ほど除外したインスタンスをAutoScalingGroupに戻してみましょう。
$ as-attach-instances i-59c0fb5f \ --auto-scaling-group sample-scaling-group \ --I <accessKey> --S <secretKey> --region ap-northeast-1 OK-Instance(s) will be attached
まとめ
Auto Scalingのインスタンスを誤ってStopしてTerminateされてしまった、という経験をしたことがある方もいらっしゃると思います。(私だけ...?)
ですが、今回のアップデートによりAuto Scaling中のインスタンスでもStop/Startを実施できるようになったと思います。AWS CLIや各種SDK, Management Consoleにも早く反映されることを期待しています!