Auto Scaling グループを更新したのですが、AWS CloudFormation スタックの更新中に期待していた結果を得られませんでした。どうすれば希望する結果を得ることができますか?

AWS::AutoScaling::AutoScalingGroup リソースは、UpdatePolicy 属性を使用して、AWS CloudFormation スタックの更新時に Auto Scaling グループリソースがどのように更新されるかを定義します。UpdatePolicy 属性に正しい設定が行われていない場合、ローリング更新が予期しない結果を生じる可能性があります。

AWS CloudFormation が Auto Scaling グループのローリング更新を処理する方法は、AutoScalingRollingUpdate ポリシーを使用して制御することができます。この一般的なアプローチは、同じ Auto Scaling グループを保持したまま、設定したパラメーターに基づいて古いインスタンスを置き替えます。

注意: 以下の解決方法は、AutoScalingRollingUpdate ポリシーのみを取り上げています。AutoScalingReplacingUpdate ポリシーを使用して、失敗する恐れのないスタックの即時的なロールバックを実行することができます。詳細については、「AutoScalingReplacingUpdate ポリシー」を参照してください。

AutoScalingRollingUpdate ポリシーは、以下の設定オプションをサポートします。

"UpdatePolicy": {
  "AutoScalingRollingUpdate": {
    "MaxBatchSize": Integer,
    "MinInstancesInService": Integer,
    "MinSuccessfulInstancesPercent": Integer,
    "PauseTime": String,
    "SuspendProcesses": [ List of processes ],
    "WaitOnResourceSignals": Boolean
  }
}

スタックの更新中に Auto Scaling グループが正しく更新されることを妨げている原因を確認するには、必要に応じて以下のトラブルシューティングシナリオを実行してください。

WaitOnResourceSignals と PauseTime を設定して成功シグナルの問題を回避する

AutoScalingRollingUpdate ポリシーで、WaitOnResourceSignals プロパティを false に設定します。

注意: WaitOnResourceSignalstrue に設定されている場合は、PauseTime がタイムアウト値に変更されます。AWS CloudFormation は、PauseTime 値によって指定されている最大時間まで成功シグナルの受け取りを待ちます。成功シグナルが受け取られない場合、AWS CloudFormation は更新をキャンセルします。キャンセル後、AWS CloudFormation はスタックを同じ設定 (同じ PauseTime 値を含む) にロールバックします。詳細については、「Auto Scaling グループに UpdatePolicy を追加する」を参照してください。

MinSuccessfulInstancesPercent を設定してスタックがロールバックされないようにする

ローリング更新中に多数のインスタンスを置き換えて、各インスタンスの成功シグナルを待っている場合は、以下の手順を完了してください。

AutoScalingRollingUpdate ポリシーで、MinSuccessfulInstancesPercent プロパティの値を設定します。

注意: MinSuccessfulInstancesPercent プロパティの設定は、単一のインスタンスが起動に失敗した場合に AWS CloudFormation がスタック全体をロールバックすることを阻止します。詳細については、「UpdatePolicy 属性」を参照してください。

SuspendProcesses を設定して、Auto Scaling グループに対する予期しない変更を防ぐ

ローリング更新中、HealthCheckReplaceUnhealthyAZRebalanceAlarmNotification、および ScheduledActions の各 Auto Scaling プロセスを停止します。

重要: Elastic Load Balancing (ELB) で Auto Scaling グループを使用している場合は、LaunchTerminate、および AddToLoadBalancer の各プロセスを停止しないでください。これらのプロセスは、ローリング更新を実行するために必要です。

注意: ローリング更新中に予期しないスケーリングアクションによって Auto Scaling グループの状態が変更されると、アップデートが失敗する可能性があります。この失敗は、AWS CloudFormation によるグループの一貫性のない表示によって引き起こされる場合があります。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください

公開日: 2016 年 9 月 9 日

更新日: 2019 年 2 月 11 日