[アップデート] EC2起動テンプレートのAMI指定でSSM Parameterがサポートされました

2023.01.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

本日よりEC2起動テンプレートのAMI指定でSSM Parameterの名前を指定して使える様になりました。

AWSからのアナウンスはこちらになります。

どういうことか?

AWSのドキュメントにある図を見れば一発なのでこちらをご覧ください。

従来起動テンプレートにあるAMIを更新するには直接テンプレートの内容を更新する必要がありました。
今回の更新でAMIに

  • resolve:ssm:(SSMパラメーター名)
  • resolve:ssm:(SSMパラメーター名):(バージョン番号)
  • resolve:ssm:(SSMパラメーター名):(ラベル名)

の形式でSSM Parameterの名前を指定することができる様になり、AMI更新の自動化をより簡易にできる様になりました。
併せてAMI ID以外のパラメーターを誤って変更してしまうリスクも減らせる形となります。

試してみた

それでは早速試してみます。
今回は私の検証用AWSアカウントの東京リージョンで検証しています。

1. SSM Parameterの準備

はじめにSSM Parameterを新規作成します。

名前はmy-golden-imageとしています。
起動テンプレートで使うためには「文字列」タイプでデータ型を「aws:ec2:image型」にする必要があります。
値にはAMI IDを記載します。

今回は本日時点で最新のAmazon Linux 2イメージ ami-0bba69335379e17f8 (amzn2-ami-kernel-5.10-hvm-2.0.20221210.1-x86_64-gp2) を入力しました。

SSM Parameterを新規作成すると以下のメッセージが表示され、入力内容の検証後にSSM Parameterが更新されます。

パラメータを作成中です。データ型に対してパラメータ値を検証中です。パラメータはすぐに利用できない可能性があります。失敗については、Amazon CloudWatch の通知を確認してください。

出来上がった結果はこんな感じです。

なお、AMI IDに不正な値を入力した場合はエラーメッセージが一切出ることなくただ値が更新されない形になります。

2. 起動テンプレートの準備

次に起動テンプレートの準備をします。

EC2のマネジメントコンソールから新しい起動テンプレートを作成します。
名前はmy-templateとしています。

AMIの選択欄で「その他のAMIを閲覧する」を選びます。

AMIの検索画面に遷移するのでテキストボックス右の検索欄をクリックし「カスタム値/Systems Managerパラメーター指定」を選びます。

ここでSSM Parameter名を指定するダイアログが表示されるので、先ほど作成したmy-golden-imageresolve:ssm:my-golden-imageの形式で指定してやります。

「保存」しAMIの指定がresolve:ssm:my-golden-imageになっていればOKです。

AMI以外のパラメーターは環境に応じてよしなに設定してください。

作成結果はこんな感じです。
AMI ID欄がresolve:ssm:my-golden-imageとSSM Parameter名になっています。

3. EC2の起動

動作確認のため、この起動テンプレートからEC2を一台起動してみます。

作成されたインスタンスは下図となります。
ちゃんとAmazon Linux 2のAMI ami-0bba69335379e17f8 になっています。

4. AMI IDの変更

今度はSSM ParameterのAMI IDを変えてみます。

通常の用途であればOS/ディストリビューションは変えず最新のセキュリティパッチやアプリケーション更新が適用されたAMIに切り替えるでしょうが、今回は分かりやすさのためにAmazon Linux 2 → Ubuntu 20.04 *1とディストリビューションを変えてみます。

SSM Parameterの編集画面を開き値を ami-068e3d6bc44010346 (Canonical, Ubuntu, 20.04 LTS, amd64 focal image build on 2023-01-12)に変更します。

変更後はこんな感じで値が変わりバージョンが1 → 2に更新されます。

この時点で起動テンプレートは何も変更ありません。
バージョンは1のまま変わらず、AMI指定もそのままです。

ここから新しいインスタンスを起動すると、

次のインスタンスはUbuntu 20.04になります。

いい感じですね。

補足 : Systems Manager パラメータで検索

AMIの検索画面で「Systems Manager パラメータで検索」がありましたが、こちらはあくまでも検索用です。

こちらの場合はSSM パラメーター → AMI IDの解決を行い、起動テンプレートに設定されるのは解決後のAMI ID(固定値)となるのでご注意ください。

最後に

以上となります。

地味ですが便利な更新ですね。
起動テンプレートを使った自動化がやりやすくなると思いますので機会があれば是非試してみてください。

脚注

  1. 本当はUbuntu 22.04にするつもりだったのですが指定を間違えました...