【小ネタ】AWS CLI コマンドで対象 EC2 Auto Scaling グループ配下インスタンスのヘルスステータスを変更する方法
はじめに
テクニカルサポートの 片方 です。
今回は小ネタとして、AWS CLI コマンドを利用して EC2 Auto Scaling グループ配下の異常なインスタンスのヘルスステータス "Unhealthy" を "Healthy" に変更する方法をご紹介します。
もちろん EC2 Auto Scaling グループ配下の正常なインスタンスのヘルスステータス "Healthy" を "Unhealthy" に変更することも可能です。
AWS CLI コマンド
set-instance-health コマンドを利用します。
実行コマンド例は以下です。
Healthy に変更する場合
$ aws autoscaling set-instance-health \
--instance-id i-xxxxxxxxxxxxxxx \
--health-status Healthy
Unhealthy に変更する場合
$ aws autoscaling set-instance-health \
--instance-id i-xxxxxxxxxxxxxxx \
--health-status Unhealthy
※ 適宜修正してください。
やってみた
検証用に EC2 Auto Scaling グループを作成します。
Unhealthy 状態の際に EC2 の入れ替えが発生しないよう、高度な設定より以下の中断されたプロセスを設定します。
- ReplaceUnhealthy
- HealthCheck
・Amazon EC2 Auto Scaling は、Amazon EC2ステータスチェックとスケジュールされたイベントをヘルスチェックから削除する方法を提供しません。インスタンスが置き換えられないようにしたい場合は、個々の Auto Scaling グループについて ReplaceUnhealthy プロセスと HealthCheck プロセスを停止することをお勧めします。詳細については、「Amazon EC2 Auto Scaling プロセスの一時停止と再開」を参照してください。
・異常なインスタンスのヘルスステータスを手動で に戻すにはHealthy、 set-instance-health コマンドを使用します。エラーが発生する場合、その原因はインスタンスが既に終了中であるためだと考えられます。通常、 set-instance-health コマンドHealthyを使用してインスタンスのヘルスステータスを に戻すのは、ReplaceUnhealthyプロセスまたはTerminateプロセスのいずれかが中断されている場合にのみ便利です。
準備が整いましたので、今回は CloudShell を利用して AWS CLI コマンドを実行します。
i-0144b678760c18ff8 を対象に、Healthy から Unhealthy へ変更するか試します。
AWS CLI 実行コマンド
aws autoscaling set-instance-health \
--instance-id i-0144b678760c18ff8 \
--health-status Unhealthy
直ぐ Unhealthy へ変更されました。変更されない場合には リロードをお試しください。
次は、Unhealthy から Healthy へ変更されるか試します。
成功しました!
まとめ
本ブログが誰かの参考になれば幸いです。
参考資料
- set-instance-health — AWS CLI 2.22.7 Command Reference
- CLI の から AWS のサービスを管理する CloudShell - AWS CloudShell
- Auto Scaling グループのヘルスチェックについて - Amazon EC2 Auto Scaling
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。