この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ども、大瀧です。EC2インスタンスのAWS障害時に自動でStop-StartするAuto Recovery、みなさん活用していますか?以下の記事の通り、最近東京リージョンで利用できるようになったので、「とりあえず全インスタンス設定しとけ!」みたいなケースもあるのではないでしょうか。
- 【新機能】EC2 Cloudwatchの新機能「Auto Recovery」を使ってみた | Developers.IO
- EC2 のAuto Recoveryが東京リージョンにリリースされました | Developers.IO
複数のインスタンスに設定するためにはManagement ConsoleのWeb画面ポチポチでは辛いと思いますので、バッチ処理向けにAWS CLIのワンライナーを考えてみました。
設定方法
以下の通りです。
$ aws cloudwatch put-metric-alarm \
--region ap-northeast-1 \
--alarm-name recover-ec2-instance-i-XXXXXXXX \
--alarm-description "recover-ec2-instance" \
--alarm-actions \
arn:aws:automate:ap-northeast-1:ec2:recover \
arn:aws:sns:ap-northeast-1:111122223333:MyTopic \
--namespace AWS/EC2 \
--metric-name StatusCheckFailed_System \
--dimensions Name=InstanceId,Value=i-XXXXXXXX \
--comparison-operator GreaterThanThreshold \
--unit Count \
--statistic Average \
--period 300 \
--threshold 1 \
--evaluation-periods 1
ポイントは--alarm-actionsオプションで、Auto Recovery(EC2 ActionのRecover)のARNはarn:aws:automate:<リージョン名>:ec2:recoverで固定です。メール通知用のSNSトピックは必要の応じてあらかじめ作成し、オプションにスペース区切りで付与しましょう。
後半3つの設定値は、ケースに応じてチューニングするのがおすすめです。