📈

AWS EC2のOSを更新する2つの方法(AL 2→AL 2023 へアップデート)

2024/09/29に公開

こんにちは、とがりです。
普段はセキュリティ系の企業でセキュリティアーキテクトをしています。

本記事では、AWS EC2のOSをAmazon Linux 2からAmazon Linux 2023に変更する2つの方法と、それぞれの方法のユースケースをまとめます。

想定ユースケース

現在、EC2(Amazon Linux 2)を利用している。
脆弱性の頻発していたり、サポート終了が近づいてきたので、Amazon Linux 2023への移行したい。

(ほぼ)ゼロダウンタイムでアップデートする必要がある。
ストレージとしては、EBSを利用している。

2つの方法

1 新規インスタンス(AL2023)にデータや通信を移行する

既存のインスタンスをEC2(AL2)、新規のインスタンスをEC2(AL2023)とします。

手順

  1. EC2(AL2023)を作成する
  2. EC2(AL2023)でアプリケーションが正常に動作するするように設定する
  3. EC2(AL2)のデータをEC2(AL2023)にコピーする
  4. 通信をEC2(AL2)からEC2(AL2023)に変更する

手順がまとめられた参考記事

https://speakerdeck.com/masaruogura/20240216-amazon-linux-2-wo-2023-niyi-xing-sitemita

2 実行中のインスタンスのルートEBSボリュームを置き換える

実行中のインスタンスをEC2(AL2)、新規のインスタンスをEC2(NEW)とします。

手順

  1. EC2(AL2023)のAMI(AL2)を作成する
  2. AMI(AL2)からEC2(NEW)【AL2】を起動する
  3. EC2(NEW)【AL2】のOSをAL2023に更新する
  4. EC2(NEW)【AL2023】のAMI(AL2023)を作成する
  5. 実行中のインスタンスEC2(AL2)のルートEBSボリュームを置き換える

手順がまとめられた参考記事

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/replace-root.html

他の方法

今回あげた2つの方法以外にも、他の方法があります。

例えば、

  • 複数のEC2を作成し、1台ずつローリングアップデートする。
  • メンテナンスウィンドウなどを設けて、ダウンタイムを許容する。

2つの方法のユースケース

2つの方法を評価して、それぞれの方法で適したユースケースをまとめます。

1 新規インスタンス(AL2023)にデータや通信を移行する 2 実行中のインスタンスのルートEBSボリュームを置き換える
ダウンタイム なし あり
AWSデフォルトの更新機能 No Yes
AWS推奨 AWSのTAM(テクニカルアカウントマネージャー)より、推奨とのこと No
制約 少ない 多い

ルートEBSボリュームを置き換える方法は、CPU アーキテクチャやEBSボリュームタイプが異なると移行できないことや、OSの変更により廃止される機能など考慮事項も増てしまい、動作の保証ができないという点から新規インスタンス(AL2023)を起動して移行いただく方法がおすすめです。

参考:
https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/deprecated-al2.html

一方で、なるべくAWS公式で用意されている機能を使いたい場合や、EC2のインスタンスIDを変えたくない場合は既存インスタンスのルートEBSボリュームを置き換える方法が適していると思われます。

最後までお読みいただき、ありがとうございました。

Discussion