LoginSignup
11
6

More than 5 years have passed since last update.

CloudFormationで新旧LaunchConfigurationをrolling updateで切り替える

Last updated at Posted at 2015-04-13

CloudFormationの動作

  • LaunchConfiguration に更新があった場合、新規 LaunchConfiguration が作成される
  • AutoScalingGroup の UpdatePolicy に従って順次新規EC2インスタンスに切替わる
  • 切替え処理が成功すると旧 LaunchConfiguration は削除される

CloudFormationテンプレート

AWS::AutoScaling::AutoScalingGroup リソースの定義内で UpdatePolicy を指定する。

  • MinInstancesInService で指定した台数を残しつつ MaxBatchSize で指定した台数の範囲でterminateとrunを繰り返す。
  • WaitOnResourceSignals がtrueの場合、インスタンス起動時に cfn-signalaws cloudformation signal-resource でCloudFormationに起動完了を通知してやる必要がある。
  • PauseTimeWaitOnResourceSignals を指定するかどうかで少し意味合いが変わる。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は行われない。
11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6