AWSのオートスケーリングでインスタンスをオートスケーリングから外す方法

AWSのオートスケーリングをしていて1台だけインスタンスの調子がおかしいので、ログの確認をするためにオートスケーリングから外したい場合があると思います。

AutoScalingが設定されているインスタンスはELBから外すとターミネートされてしまうため、コマンドを使ってオートスケーリングの設定から外すことができます。

Auto Scalingから外すコマンド

aws autoscaling detach-instances --instance-ids i-XXXXXXXX --auto-scaling-group-name XXXXXXXX --no-should-decrement-desired-capacity

オプションは以下の意味になっています。

  • –no-should-decrement-desired-capacity:デタッチ時にAutoScalingのDesiredの数を減らさない(代替のインスタンスが新たに起動します。)
  • –should-decrement-desired-capacity:デタッチ時にAutoScalingのDesiredの数を減らす(Desired > Min になっている必要があります。Desired=Minの場合には減らせないためエラーとなります。)

AutoScalingでELBに組み込む設定にしてある場合、デタッチ時にAutoScalingおよびELBから外されます。

外されたインスタンスのTagsから以下のタグが外れます。

aws:autoscaling:groupName

Auto Scalingに組み込むコマンド

外したインスタンスに対して何らかの処置を行い、再度オートスケーリングに組み込むには以下のコマンドを実施します。

aws --profile app autoscaling attach-instances --instance-ids i-XXXXXXXX --auto-scaling-group-name XXXXXXXX

組み込んだAutoScalingのDesiredの台数が増加します。そのため、Desired < Max になっている必要があります。

インスタンスの以下のタグが復活します。

aws:autoscaling:groupName

参考URL

http://aws.typepad.com/aws_japan/2014/08/auto-scaling-update-lifecycle-standby-detach.html http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/detach-instance-asg.html http://docs.aws.amazon.com/cli/latest/reference/autoscaling/detach-instances.html http://docs.aws.amazon.com/cli/latest/reference/autoscaling/attach-instances.html