TECHSCORE BLOG

マーケティングSaaS を提供するシナジーマーケティングのエンジニアブログです。

Amazon Linux 2からAmazon Linux 2023へのEOL対応

プラットフォームグループの木山です。

弊社ではAmazon EC2を利用しており、インスタンスのOSとしてAmazon Linuxを採用しています。

今回はAmazon Linux 2のEOLに伴い、Amazon Linux 2023へのアップデートを行ったので、その内容と知見を共有します。

Amazon Linux 2023の概要

Amazon Linuxとは、AWS(アマゾンウェブサービス)によってサポートされるディストリビューションで、2年ごとにメジャーバージョンがリリースされます。

また、AWSのサービスとの統合を可能にするパッケージや設定も含まれています。

今回のAmazon Linux 2023はバージョン番号にあるように2023年の3月にリリースされたバージョンになります。

Amazon Linux 2と2023の主な変更点

AL2とAL2023の比較に詳細な変更点がありますが、その中でも気になったものや移行を行う中で注意した点を以下に挙げます。

Amazon Linux 2 Amazon Linux 2023
サポート期間 2026/6/30 2029/6/30
ベースOS CentOS RPMベース(Fedora34,35,36 )
パッケージ管理ツール yum dnf
ジョブ管理 cron systemd ※cronはデフォルトで無効
EPEL 対応 非対応
ログ管理システム rsyslog systemd ※デフォルトで無効
AWS CLI V1 V2
デフォルトのsshd ホスト鍵 ssh-rsa有効 ssh-rsa無効
セキュリティ SELinux 無効 SELinux permissiveモードで有効

移行手順

Amazon Linux 2023 では、ベースとなるディストリビューションやパッケージ管理ツールが変更されているため、直接的にアップグレードするコマンドは提供されていません。 バージョン間での互換性はありますが、イメージとしては別環境への移行を想像するのが良いと思います。

公式のQ&Aサイトや公式ドキュメントの移行方法の「一般的な移行方法」にも以下のような記載がありました。

  1. 新しくAmazon Linux 2023のインスタンスを作成する
  2. 新しい環境にアプリケーションのデプロイを行う
  3. アプリケーションのテストを行い、新環境での動作確認を行う
  4. テストが成功したらトラフィックを新環境にリダイレクトする

今回も上記のような流れで構築を行いました。

準備

サーバーの移行前後で同じ機能を提供する必要があるため、上記で記載した各バージョンの相違点を理解することが重要です。

また、移行前の環境で使用していたパッケージが古い場合や、過去に使用していたが現在は利用しないユーザーやパッケージが無いかを確認し、アップデートを検討することも必要です。

今回移行を行う際には移行に関する方針は決まっていましたが、ゼロから進める場合には社内の利用者へのヒアリングやシステムの安全性とパフォーマンスを向上させるために最新のパッケージへの移行を検討する必要があると感じました。

移行手順の詳細

移行すべきパッケージ、ユーザーが明確になったらあとはそれに従い構築を行います。

公式が以下の様に明言している様にAmazon Linux 2023で対応しているパッケージについてはコマンドを置き換えるだけでインストール可能でした。

DNF is similar to YUM in its usage. Many DNF commands and command options are the same as YUM commands. In a Command Line Interface (CLI) command, in most cases dnf replaces yum.

しかし移行後の環境でサポートされていないパッケージがある場合はdnfは利用できません。

Postgresqlを例に挙げると、2025/1現在でサポートされているバージョンは以下の通りです。

Postgresql version リリース日 サポート終了日
17 2024/9/26 2029/11/8
16 2023/9/14 2028/11/9
15 2022/10/13 2027/11/11
14 2021/9/30 2026/11/12
13 2020/9/24 2025/11/13

Amazon Linux 2023のv2023.6.20241212リリース時点では15,16のサポートしかありません。

$ dnf list | grep postgresql
collectd-postgresql.x86_64                                        5.12.0-16.amzn2023.0.4                      amazonlinux
postgresql-odbc.x86_64                                            13.02.0000-1.amzn2023.0.1                   amazonlinux
postgresql-odbc-tests.x86_64                                      13.02.0000-1.amzn2023.0.1                   amazonlinux
postgresql15.x86_64                                               15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-contrib.x86_64                                       15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-docs.x86_64                                          15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-llvmjit.x86_64                                       15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-plperl.x86_64                                        15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-plpython3.x86_64                                     15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-pltcl.x86_64                                         15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-private-devel.x86_64                                 15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-private-libs.x86_64                                  15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-server.x86_64                                        15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-server-devel.x86_64                                  15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-static.x86_64                                        15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-test.x86_64                                          15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-test-rpm-macros.noarch                               15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-upgrade.x86_64                                       15.9-1.amzn2023.0.1                         amazonlinux
postgresql15-upgrade-devel.x86_64                                 15.9-1.amzn2023.0.1                         amazonlinux
postgresql16.x86_64                                               16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-contrib.x86_64                                       16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-docs.x86_64                                          16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-llvmjit.x86_64                                       16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-plperl.x86_64                                        16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-plpython3.x86_64                                     16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-pltcl.x86_64                                         16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-private-devel.x86_64                                 16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-private-libs.x86_64                                  16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-server.x86_64                                        16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-server-devel.x86_64                                  16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-static.x86_64                                        16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-test.x86_64                                          16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-test-rpm-macros.noarch                               16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-upgrade.x86_64                                       16.5-1.amzn2023.0.1                         amazonlinux
postgresql16-upgrade-devel.x86_64                                 16.5-1.amzn2023.0.1                         amazonlinux

そのため、今回はリポジトリからバイナリファイルをサーバーに落としてきて手動で展開する方法を取りました。 参考:ソースコードからインストール

移行後の確認

今回EOL対応を行ったサーバーは別グループが利用するため、移行後のテストではコマンドが利用できること、作成したユーザーや設定ファイルが想定通りに構築されていることを確認しました。その後、社内の利用者に対してアナウンスを行い、不備が無いかを確認することで完了しました。

注意点

今回の移行では行いませんでしたが、Amazon Linux 2023はGithubのISSUEを作成することでパッケージの追加、変更をリクエストすることが出来ます。 amazon-linux-2023 ISSUE

上記で例に出したPostgresql16も2024/10/10のリリースで追加されたため、最新のバージョン情報を追うことが重要になってきます。

しかし、以下の様にAmazon Linux 2023のパッケージアップデートはdnf updateでは実行できず、明示的にリポジトリバージョンを指定する必要があります。

$ sudo dnf update
Last metadata expiration check: 8:58:21 ago on Mon Jan 20 01:28:38 2025.
=====================================================================================================
WARNING:
  A newer release of "Amazon Linux" is available.

  Available Versions:

  Version 2023.5.20240805:
    Run the following command to upgrade to 2023.5.20240805:

      dnf upgrade --releasever=2023.5.20240805

    Release notes:
     https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20240805.html

手動で構築する場合はメッセージを読んで適宜コマンドを実行したらいいのですが、IaCツールでインスタンスを管理している場合はベースAMIを変更するか、user-dataに適切なリポジトリバージョンを記載しておきましょう。

まとめ

今回はAmazon Linuxの概要とEOL対応を紹介しました。

普段利用しているOSとは更新方法が異なりましたが、ドキュメントや記事が多くあったので情報には困りませんでした。

自分の知りたい情報だけを都度調べるのではなく、時間を取ってドキュメントを読む時間を作ることの重要性を確認出来ました。

一次情報であるAWSドキュメントは一部日本語に対応していないものもあるため、今後はそこも注意して情報収集を行っていこうと思います。

木山 瑞基(キヤマ ミズキ)
新卒一年目のインフラエンジニアです
沖縄出身で東京の寒さと乾燥に直面し、震えています。


シナジーマーケティング株式会社では一緒に働く仲間を募集しています。