EC2 起動テンプレートを更新したら、バージョンも意識しよう
こんにちは。まると(@MaruDevG)です。
シンプルではありますがEC2の起動テンプレートを更新した際に変更が反映されず、ハマってしまったことがあったので、将来に向けたメモを残します。
先にまとめ
起動テンプレートを更新したら、使用するバージョンの更新も忘れずに!
起動テンプレートとは
以前書いた記事のおさらいとなりますが、各種プロパティをテンプレート化して後から同じ設定のEC2 インスタンスを立ち上げることができるようにするものです。
ハマったこと
ある日、起動テンプレートの内容を更新して、テンプレートからEC2を起動しようとしたところ、更新内容が反映されないことがありました。
- インスタンスタイプ t2.micro のテンプレートを...
- t3.micro に変更して、バージョンを作成
- 起動テンプレートからEC2を起動すると...
- 設定変更前の t2.micro で起動している
何を見落としていたか
起動テンプレートの設定を変更すると「バージョン」と呼ばれるものが作成されます。
ただし、バージョンを作成してもデフォルトバージョンは自動で更新されないため、EC2 インスタンス起動時に起動テンプレートのバージョンを指定するか、デフォルトバージョンを変更する必要があります。
起動時にバージョンを指定する方法(AWS CLI)
Version
にバージョン番号を渡すことで指定できます
aws ec2 run-instances --launch-template LaunchTemplateId=<起動テンプレートのID>,Version=<起動テンプレートのバージョン>
例
# 起動テンプレート(lt-xxxxxxxxxxxxxxxxx)内のバージョン2を使用する
aws ec2 run-instances --launch-template LaunchTemplateId=lt-xxxxxxxxxxxxxxxxx,Version=2
参考
起動時にバージョンを指定する方法(AWS マネジメントコンソール)
起動テンプレートからインスタンスを起動する際に、バージョンを指定するドロップダウンメニューがあります。
メニューからバージョンを指定できます。
デフォルトバージョンを変更する方法(AWS CLI)
ec2 modify-launch-templateから設定できます。
aws ec2 modify-launch-template --launch-template-id <起動テンプレートのID> --default-version <起動テンプレートのバージョン>
例
# 起動テンプレート(lt-xxxxxxxxxxxxxxxxx)のデフォルトバージョンを2に変更する
aws ec2 modify-launch-template --launch-template-id lt-xxxxxxxxxxxxxxxxx --default-version 2
参考
デフォルトバージョンを変更する方法(AWS マネジメントコンソール
AWS マネジメントコンソールでデフォルトバージョンを変更したい起動テンプレートを選択し、右上にあるアクションボタンから「デフォルトバージョンを設定」から設定できます。
Auto Scaling グループで使用している場合はチェック
Auto Scaling グループを作成する際に起動テンプレートを指定しますが、こちらも必要に応じて設定が必要となります。
- 特定のバージョン: 指定した特定のバージョンを常に使用
- 起動テンプレートのデフォルトバージョン: デフォルトバージョンが変更されると自動的に追従
- 起動テンプレートの最新バージョン: 常に最新バージョンを使用
上記3点から指定できるので、こちらも確認してみてください。
終わりに
結構シンプルなところではありますが、デフォルトバージョンの存在は改めて認識しておく必要がありました。
また、Auto Scaling グループもバージョンの指定方法によっては、設定を変更する必要があるのでご注意ください。