はじめに
本記事では、AWS CloudFormation管理コンソールを使って、EC2にAutoRecoveryの設定をする手順を説明しています。(初心者向け)
本記事で掲載しているテンプレートの最新版は、下記に置いてます。
https://github.com/okubo-t/aws-cloudformation
AutoRecoveryとは
EC2 インスタンスをCloudWatchでモニタリングし、基になるハードウェア障害または AWS による修復を必要とする問題でインスタンスが正常に機能しなくなった事象を検知すると、CloudWatchが自動的にインスタンスを復旧するアクションを実行する機能のことです。
詳細
AWS ドキュメント
[インスタンスの復旧]
(https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-recover.html)
[Amazon Elastic Compute Cloud インスタンスの復元]
(https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/quickref-cloudwatch.html#cloudwatch-sample-recover-instance)
設定手順
1 AWS CloudFormation管理コンソールから、スタックの作成をクリックします。

| パラメータ名 | 用途 | 備考 | 
|---|---|---|
| スタックの名前 | テンプレートから作成するリソース一式の名前 | 例 prd-stack-vpc-20180801 | 
| EC2Instance | AutoRecoveryを設定するEC2を選択します | 
4 後続は、デフォルトのまま次へ次へで、作成します。
5 状況が CREATE COMPLETEになれば、EC2のAutoRecoveryの設定が完了です。

6 EC2の管理コンソールで、設定したEC2のモニタリングの情報を確認します。
設定した直後はまだデータ(メトリックなど)を収集していないので、下記のメッセージが表示されます。

データが収集されて、下記のメッセージが表示されたら、設定が完了です。

テンプレート
AWSTemplateFormatVersion: "2010-09-09"
Description:
  Auto Recovery for EC2
# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------# 
Parameters:
  EC2Instance:
    Type: AWS::EC2::Instance::Id
Resources:
# ------------------------------------------------------------#
#  Auto RecoveryAlarm
# ------------------------------------------------------------#
  AutoRecoveryAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmName: !Sub "${EC2Instance}-autorecovery"
      Namespace: AWS/EC2
      MetricName: StatusCheckFailed_System
      Statistic: Minimum
      Period: 60
      EvaluationPeriods: 10
      ComparisonOperator: GreaterThanThreshold
      Threshold: 0
      AlarmActions: 
        - !Sub "arn:aws:automate:${AWS::Region}:ec2:recover"
      Dimensions:
        - Name: InstanceId
          Value: !Ref EC2Instance


