Tagbangers Blog

AutoScalingGroupとAMIの依存関係

割と今更な内容かもしれないですが、初めて味わったので備忘録を兼ねて、、、

AWSのAutoScalingGroupは、結構色々なリソースを参照しています。
LaunchConfigurationsであったり、そのLaunchConfigurationsはAMIやKeyPairやSecurityGroupであったりと。
コンソールから作成するときも、項目がいくつもあるので大変です。

で、他のリソースから参照されている場合は、参照されている側は削除できないものだと思っていました。
ついさっきまでは。

結論から書いてしまうと、AMIを削除したところ、これを参照していたLaunchConfigurationsおよびAutoScalingGroupがおりまして、
そのAutoScalingGroupがスケーリングをしようとする際にエラーになってしまって詰んだというお話です。
Activity Historyを確認したところ、下記のようにエラーの原因が表示されておりました。

Description:Launching a new EC2 instance. Status Reason: The image id 'ami-xxxxxxxx' does not exist. Launching EC2 instance failed.

AMIが無いと。消しちゃいましたしね。

先ほど詰んだ、と書いてしまいましたが、
今回の場合はスケーリング前から稼働していたインスタンスが無事だったので、
このインスタンスからAMIを取り直し、LaunchConfigurationsを作成。
当該AutoScalingGroupのLaunchConfigurationsを差し替えることで事なきを得ることができました。
ただ、もしも全てのインスタンスが死んでいた場合など、復旧が困難になるケースも考えられるのでオペレーションには十分に注意したいです。

検証環境で味わえて良かったです。