AWS Systems Manager を利用して一発でインスタンスタイプを変更してみる!

こんにちは 園部です。

re:Invent 2019 も終わり、すっかり年の瀬モードになりつつます。。
さて、今日は AWS Systems Manager(以下、SSM) を利用して EC2 インスタンスタイプを変更してみたいと思います。

「えー? そんなの簡単じゃん。。マネジメントコンソールでポチポチッとさ」
「いえ。私は、CLI でさっとできますから!!(キリッ)」

という声も聞こえてきそうですが。。稼働している複数台の EC2 インスタンスに対して変更を行う場合ではどうでしょうか?EC2 インスタンスタイプの変更は以下の流れで行う必要があります。

  1. EC2 の停止
  2. インスタンスタイプの変更
  3. EC2 の起動

1 と 3 はマネジメントコンソールでも複数選択し、実行することが可能です。ただ、 2 に関しては単独での操作が必要とされます。

  • EC2 を複数選択している時は、「インスタンスタイプの変更」はグレーアウトしています。

  • EC2 を一つだけ選択している時は、「インスタンスタイプの変更」は選択可能です。

変更する EC2 の増加、大量の EC2 から、対象 EC2 を選択して実施を繰り返す。どちらも苦行とミスの気配がします。。

もちろん、既存の方法でも実施は可能ですが、ここは SSM Automation の出番です! SSM Automation AWS-ResizeInstance を利用して先ほどの流れを一気に複数台に対して実施してみたいと思います。

やってみる

やってみる条件

以下の条件を対象にインスタンスタイプを t2.micro >>> t2.small へ変更します。

  • EC2: 4台
  • ステータス: 実行中

  • SSM実行対象: マネージドインスタンス登録(必要な IAM Role がアタッチされている)

変更するインスタンスタイプの互換性を確認

今回は、同じインスタンスファミリーでの変更ですが、世代を変更する際などは、いくつか注意が必要です。

Nitro 世代がいい!という方は、是非弊社メンバーが書いているこちらもご参照ください。

あとは、上記外にも上限も確認しておくと良いかもしれません。

タグの付与

対象となる EC2 に特定のタグを付与し、それを実行対象とします。今回は、以下のタグを付与します。

Key:InstanceTypeChange,Value:On

SSM Automation の実行

それでは、実施していきましょう。

AWS Systems Manger >>> オートメーション >>> オートメーションの実行 >>> Instance management >>> AWS-ResizeInstance >>> 次へ を選択

レート制御 を選択

ターゲット部分は、付与しておいたタグを指定

変更したい インスタンスタイプを指定し、実行 を選択

EC2 が停止中となります。

停止が完了すると、インスタンスタイプが変更され、起動中となります。

しばらくすると、全ての EC2 のインスタンスタイプが変更されました!

SSM 側も正常に終了しています!!

さいごに

SSM Automation ドキュメント には運用でよく実施される内容がドキュメントとして提供されています。普段、マネジメントコンソールから選択・操作したり CLI で実行していることが既にドキュメントとして提供されていないかを確認してみるのもいいかもしれません。

既存で提供されているものを出来るだけ利用し、作業負担やスクリプトの維持管理を軽減することも、運用現場を明るくする大切なことの一つではないかと思います。