[新機能]Auto Scaling Groupからインスタンスを取り外せるようになりました!

2014.07.31

こんにちは。望月です。
今朝方、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台起動された状態を作りました。


as_1

この状態で、先ほどインストールした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から確認してみましょう。


    as_2

    ちなみに、この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にも早く反映されることを期待しています!