ロールバックトリガーを使用して、アラーム違反時に CloudFormation スタックをロールバックする - AWS CloudFormation

ロールバックトリガーを使用して、アラーム違反時に CloudFormation スタックをロールバックする

ロールバックトリガーを使用することで、スタックの作成中および更新中にアプリケーションの状態を AWS CloudFormation で監視し、指定されたアラームのしきい値をアプリケーションが超過した場合は、そのオペレーションをロールバックすることができます。作成したロールバックトリガーごとに、CloudFormation がモニタリングする CloudWatch アラームを指定します。CloudFormation は、スタックの作成または更新オペレーション時、およびすべてのリソースがデプロイされてから指定された時間、指定されたアラームをモニタリングします。スタックオペレーションまたはモニタリング期間中にいずれかのアラームが ALARM 状態になった場合、CloudFormation はスタックオペレーション全体をロールバックします。

モニタリング時間は、デフォルト値の 0 から最大 180 分まで設定できます。この時間中、CloudFormation はスタックの作成、または更新オペレーションによってすべての必要なリソースがデプロイされた後、すべてのロールバックトリガーをモニタリングします。スタックオペレーションまたはこのモニタリング期間中にいずれかのアラームが ALARM 状態になった場合、CloudFormation はスタックオペレーション全体をロールバックします。更新オペレーションの場合、その後アラームが ALARM 状態にならずにモニタリング期間が切れると、CloudFormation は通常どおり古いリソースの破棄に進みます。モニタリング時間を設定したがどのロールバックトリガーも指定しない場合でも、CloudFormation は更新オペレーション用に古いリソースがクリーンアップされるまで指定された時間待機します。このモニタリング期間を使用して必要な手動スタック検証を実行し、必要に応じてスタックの作成または更新を手動でキャンセルできます。モニタリング時間を 0 分に設定した場合でも、CloudFormation はスタックの作成および更新オペレーション時にロールバックトリガーをモニタリングし、アラームが ALARM 状態になった場合にオペレーションをロールバックします。アラームを超過しない更新オペレーションの場合、オペレーションが完了するとすぐに古いリソースの破棄が開始されます。

デフォルトでは、CloudFormation は、アラームが INSUFFICIENT_DATA 状態ではなく ALARM 状態になった場合にのみ、スタックオペレーションをロールバックします。アラームが INSUFFICIENT_DATA 状態になった場合も CloudFormation にスタックオペレーションをロールバックさせるには、欠落データを breaching として処理するように CloudWatch アラームを編集します。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch アラームが欠落データを処理する方法の設定」を参照してください。

更新オペレーション中にスタックをロールバックしている時は、CloudFormation はロールバックトリガーをモニタリングしません。

最大 5 個のロールバックトリガーを追加できます。ロールバックトリガーを追加するには、CloudWatch アラームの Amazon リソースネーム (ARN) を指定します。現在、AWS::CloudWatch::Alarm タイプと AWS::CloudWatch::CompositeAlarm タイプをロールバックトリガーとして使用できます。CloudWatch アラームの詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch でのアラームの使用」を参照してください。

指定された CloudWatch アラームが欠落している場合、スタックオペレーション全体が失敗してロールバックします。

CloudWatch へのアクセスには認証情報が必要であることに注意してください。これらの認証情報は、リソースに関する CloudWatch メトリクスデータの取得などの AWS リソースへの許可が必要です。詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch に対する認証とアクセスコントロール」を参照してください。

スタックの作成中または更新中にロールバックトリガーを追加する

スタックの作成または更新にロールバックトリガーを追加する
  1. スタックを作成または更新するときは、[スタックオプションの設定] ページの [詳細オプション] で、[ロールバック設定] セクションを展開します。

  2. 0180 分の監視時間を入力します。デフォルト値は 0 です。

  3. ロールバックトリガーとして使用する CloudWatch アラームまたは複合アラームの ARN を指定し、[Add CloudWatch alarm ARN] (CloudWatch アラームの ARN を追加) を選択します。

    例えば、以下は CloudWatch アラームまたは複合アラーム arn:aws:cloudwatch:us-east-1:123456789012:alarm:MyAlarmName の ARN です。

  4. [Next] (次へ) を選択して、スタックの詳細を確認します。

  5. スタックの作成の設定と推定コストを確認したら、[Create stack] (スタックの作成) を選択してスタックを起動します。

変更セットにロールバックトリガーを追加する

変更セットにロールバックトリガーを追加するには、スタックテンプレートを選択し、[ロールバック設定] セクションで CloudWatch アラームを指定することで、変更セットを作成します。

  1. スタックの [creating] (作成) または更新中に、[Configure stack options (スタックオプションの構成) ページの [Advanced options] (詳細オプション) にある [Rollback configuration] (ロールバック構成) セクションを展開します。

  2. 0180 分の監視時間を入力します。デフォルト値は 0 です。

  3. ロールバックトリガーとして使用する CloudWatch アラームまたは複合アラームの ARN を指定し、[Add CloudWatch alarm ARN] (CloudWatch アラームの ARN を追加) を選択します。

    例えば、以下は CloudWatch アラームまたは複合アラーム arn:aws:cloudwatch:us-east-1:123456789012:alarm:MyAlarmName の ARN です。

  4. [Next] (次へ) を選択して、スタックの詳細を確認します。

  5. スタックの作成の設定と推定コストを確認したら、[Create stack set] (スタックセットの作成) を選択します。

  6. [Create change set] (変更セットの作成) モジュールを確認して、[Create change set] (変更セットの作成) を選択します。

  7. (オプション) 変更セットに基づいて新しいスタックの作成を完了するには、[Execute] (実行) を選択し、ロールバック構成を指定して、[Execute change set] (変更セットの実行) を選択します。

スタックのロールバックトリガーを表示する

スタックのロールバックトリガーを表示するには、「ロールバック構成」セクションを参照してください。

  1. [Stacks] (スタック) ページで、表示するスタックを左側のリストから選択します。

  2. [Stack info] (スタック情報) タブで、[Rollback configuration] (ロールバック構成) セクションを展開します。

結果: ロールバックトリガーが指定されている場合、ロールバックトリガーは [Rollback configuration] (ロールバック構成) セクションに表示されます。

変更セットのロールバックトリガーを表示する

変更セットのロールバックトリガーを表示するには、「Rollback configuration」(ロールバック構成) セクションを参照してください。

  1. [Stacks] (スタック) ページで、表示するスタックを左側のリストから選択します。

  2. [Change sets] (変更セット) タブを選択し、表示する変更セットを選択します。

  3. [Input] (入力) タブを選択し、[Rollback configuration] (ロールバック構成) セクションを表示します。

結果: ロールバックトリガーが指定されている場合、ロールバックトリガーは [Rollback configuration] (ロールバック構成) セクションに表示されます。