

# ロールバックトリガーを使用して、アラーム違反時に CloudFormation スタックをロールバックする
<a name="using-cfn-rollback-triggers"></a>

ロールバックトリガーを使用することで、スタックの作成中および更新中にアプリケーションの状態を 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 アラームが欠落データを処理する方法の設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)」を参照してください。

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

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

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

CloudWatch へのアクセスには認証情報が必要であることに注意してください。これらの認証情報は、リソースに関する CloudWatch メトリクスデータの取得などの AWS リソースへの許可が必要です。詳細については、「Amazon CloudWatch ユーザーガイド」の「[Amazon CloudWatch に対する認証とアクセスコントロール](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)」を参照してください。

## スタックの作成中または更新中にロールバックトリガーを追加する
<a name="using-cfn-rollback-triggers-create"></a>

**スタックの作成時または更新時にロールバックトリガーを追加するには (コンソール)**

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

1. `0`〜`180` 分の監視時間を入力します。デフォルト値は `0` です。

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

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

1. **[次へ]** を選択して、スタックの詳細を確認します。

1. 準備ができたら、**[送信]**を選択してスタックを作成または更新します。

**スタックの作成または更新時にロールバックトリガーを追加するには (AWS CLI)**  
[https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) コマンドを使用するか、または `--rollback-configuration` オプションを設定して [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html) コマンドを使用します。

例えば、次の **update-stack** コマンドでは、{{MyCompositeAlarm}} を 5 分間のモニタリング時間のロールバックトリガーとして設定しています。

```
aws cloudformation update-stack --stack-name {{MyStack}} \
  --use-previous-template \
  --rollback-configuration \
  "RollbackTriggers=[{Arn=arn:aws:cloudwatch:{{us-east-1}}:{{123456789012}}:alarm:{{MyCompositeAlarm}},Type={{AWS::CloudWatch::CompositeAlarm}}}],MonitoringTimeInMinutes={{5}}"
```

## 変更セットにロールバックトリガーを追加する
<a name="using-cfn-rollback-triggers-change-set"></a>

変更セットにロールバックトリガーを追加するには (コンソール)

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

1. `0`〜`180` 分の監視時間を入力します。デフォルト値は `5` です。

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

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

1. **[次へ]** を選択し、変更セットの詳細を確認します。

1. 準備ができたら、**[変更セットの作成]** を選択して変更セットを作成します。

**変更セットにロールバックトリガーを追加するには (AWS CLI)**  
`--rollback-configuration` オプションで [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) コマンドを使用します。

## スタックのロールバックトリガーを表示する
<a name="using-cfn-rollback-triggers-view"></a>

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

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

1. **[スタック情報]** タブで、**[ロールバック設定]** セクションを展開します。

## 変更セットのロールバックトリガーを表示する
<a name="using-cfn-rollback-triggers-view-change-set"></a>

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

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

1. **[変更セット]** タブを選択し、表示する変更セットを選択します。

1. **[入力]** タブを選択し、**[ロールバック設定]** セクションを表示します。