CloudFormationの動作
- LaunchConfiguration に更新があった場合、新規 LaunchConfiguration が作成される
- AutoScalingGroup の UpdatePolicy に従って順次新規EC2インスタンスに切替わる
- 切替え処理が成功すると旧 LaunchConfiguration は削除される
CloudFormationテンプレート
AWS::AutoScaling::AutoScalingGroup リソースの定義内で UpdatePolicy を指定する。
-
MinInstancesInServiceで指定した台数を残しつつMaxBatchSizeで指定した台数の範囲でterminateとrunを繰り返す。 -
WaitOnResourceSignalsがtrueの場合、インスタンス起動時にcfn-signalやaws cloudformation signal-resourceでCloudFormationに起動完了を通知してやる必要がある。 -
PauseTimeはWaitOnResourceSignalsを指定するかどうかで少し意味合いが変わる。trueの場合signal-resourceの通知を待機するタイムアウト時間になり、タイムアウトするとupdate失敗になる。falseの場合は起動成否を確認できないので、単純に次のインスタンスを起動するまでのインターバルになる。
詳細はUpdatePolicyに関するドキュメントを参照。
{
"Resources": {
"Group": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"UpdatePolicy": {
"AutoScalingRollingUpdate": {
"MaxBatchSize": "2",
"MinInstancesInService": "5",
"PauseTime": "PT10M",
"WaitOnResourceSignals": "true"
},
"AutoScalingScheduledAction" : {
"IgnoreUnmodifiedGroupSizeProperties" : "true"
}
},
"Properties": {
:
}
}
}
}
注意点
- LaunchConfiguration内のMetadataに変更があっても検知されずupdateは行われない。