背景
アップデートで、EC2起動テンプレートのAMI指定欄にSSMパラメータを指定することができるようになりました。
これにより、AMI更新時に起動テンプレートのAMI欄を修正して新規バージョンを発行する必要がなくなりました。
試してみる
ssm パラメータを作成し、amiを参照する流れを試してみます。
パラメータにラベルをアタッチし、ラベルからバージョンを参照します。
amiを更新する際にはパラメータをoverwriteし、ラベルの付け替えを行います。
パラメータの作成
AMIのIDを管理するパラメータを作成します。
Amazon Linux2から作成した自己所有のAMIを設定しています。
aws ssm put-parameter \
--name "/amis/custom-image" \
--type "String" \
--data-type "aws:ec2:image" \
--value "ami-0b2abc514ca314069"
更に、新規作成したパラメータのバージョンにラベル:Current
を設定します。
aws ssm label-parameter-version \
--name "/amis/custom-image" \
--labels "Current" \
--parameter-version 1
パラメータの作成が完了しました。
起動テンプレートの作成
EC2のコンソールから起動テンプレートを作成します。
SSMパラメータの参照はAMI設定の箇所で行います。
検索窓の△から「カスタム値/Systems Managerパラメータを指定」を選択。
ssmパラメータの文字列を入力します。
入力方法は色々ありますが、今回はlabelで管理したいのでlabelを入力に含めています。
resolve:ssm/amis/custom-image:Current
他は任意に設定し、作成を行います。
起動の確認
上記で作成した起動テンプレートからインスタンスを起動すると、ssmパラメータのamiが参照されていることを確認できました。
amiの更新も確認してみます。
パラメータをoverwriteし、Currentラベルを付け替えます。
aws ssm put-parameter \
--overwrite \
--name "/amis/custom-image" \
--type "String" \
--data-type "aws:ec2:image" \
--value "ami-082762d8b0e73e89c"
aws ssm label-parameter-version \
--name "/amis/custom-image" \
--labels "Current" \
--parameter-version 2
この状態でインスタンスを起動すると、パラメータバージョン2のamiが参照されました。
まとめ
EC2起動テンプレートのAMI指定欄にSSMパラメータを指定することができるようになりました。これにより、パラメータを更新するだけで起動テンプレートのAMIを変更することができます。
AMIの指定をSSMパラメータに寄せるのか、起動テンプレート内で指定し新しいバージョンを発行するのかで運用フローが分かれそうですね。個人的にはSSMパラメータに寄せたほうが楽になるかなと思います。
ただ、Image Builderと連携していれば自動でAMIを更新して新バージョンを発行してくれるそうなので、SSM パラメータは不要であると思います。