Amazon Web Services ブログ

Amazon Linux 2023 – 長期サポート付きのクラウド最適化 Linux ディストリビューション

Amazon Linux 2023 (AL2023) の一般提供の開始をお知らせします。AWS は 2010 年以来、クラウド最適化 Linux ディストリビューションを提供してきました。これは、当社の第 3 世代の Amazon Linux ディストリビューションです。

どの世代の Amazon Linux ディストリビューションもセキュリティで保護され、クラウド向けに最適化されており、長期的な AWS サポートを受けることができます。当社では、Amazon Linux 2023 をこれらの原則に基づいて構築し、さらに発展させています。Amazon Linux 2023 でワークロードをデプロイすると、高度なセキュリティ基準、予測可能なライフサイクル、一貫した更新エクスペリエンスという 3 つの大きなメリットが得られます。

まず、セキュリティについて見てみましょう。Amazon Linux 2023 には、一般的な業界ガイドラインを簡単に実装できるようにする、事前設定済みのセキュリティポリシーが含まれています。これらのポリシーは、起動時または実行時に設定できます。

例えば、暗号スイートの特定のセット、TLS バージョン、または証明書や鍵交換で許容されるパラメータのシステム全体での使用を強制するようにシステム暗号化ポリシーを設定できます。また、Linux カーネルは、デフォルトで有効になっている多くのシステム強化機能を備えています。

Amazon Linux 2023 を使用することで、オペレーティングシステムのライフサイクルをより簡単に計画および管理できます。Amazon Linux の新しいメジャーバージョンは 2 年ごとにリリースされます。メジャーリリースには、スタック全体のセキュリティとパフォーマンスに関する新機能や改善が含まれます。改善には、カーネル、ツールチェーン、GLib C、OpenSSL、および他のシステムライブラリやユーティリティに対する重要な変更が含まれる場合があります。

これらの 2 年間の各期間中、メジャーリリースは 3 か月ごとにアップデートを受け取ります。これらのアップデートには、セキュリティアップデート、バグ修正、新機能やパッケージが含まれます。各マイナーバージョンは、新しい機能やパッケージに加えて、セキュリティやバグ修正を含むアップデートの累積リストです。これらのリリースには、Python や Java などの最新の言語ランタイムが含まれる場合があります。Ansible や Docker など、他の一般的なソフトウェアパッケージが含まれる場合もあります。これらの四半期ごとのアップデートに加えて、セキュリティアップデートが利用可能になり次第提供されます。

2023 を含む各メジャーバージョンには、5 年間の長期サポートが付属します。最初の 2 年間の期間が経過すると、各メジャーバージョンは 3 年間のメンテナンス期間に入ります。メンテナンス期間中であっても、該当のバージョンは、セキュリティバグ修正やパッチが利用可能になり次第、引き続きこれらを受け取ります。このサポートにより、長期にわたるプロジェクトライフサイクルを管理するために必要な安定性が得られます。

次の図は、Amazon Linux ディストリビューションのライフサイクルを示しています。

最後に、Amazon Linux は、柔軟で一貫性のある更新メカニズムである、バージョニングされたリポジトリを通じた決定論的更新を提供します。これは、断然私のお気に入りのポリシーです。ディストリビューションは Amazon Linux パッケージリポジトリの特定のバージョンにロックされるため、更新を適用する方法とタイミングを制御できます。デフォルトでは、Amazon Linux 2 とは異なり、dnf update コマンドはインストール済みのパッケージを更新しません (dnfyum の後継です)。これは、フリート全体で同じパッケージバージョンが使用されるようにするのに役立ちます。Amazon マシンイメージ (AMI) から起動されるすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスには、同じバージョンのパッケージが含まれます。また、決定論的更新は、デプロイ後にインフラストラクチャが更新されないイミュータブルなインフラストラクチャの使用を促進します。更新が必要な場合は、Infrastructure as Code スクリプトを更新し、新しいインフラストラクチャを再デプロイします。もちろん、ディストリビューションをインプレースで更新することをご希望の場合は、更新されたパッケージリポジトリを dnf がポイントするようにして、今回と同じようにマシンを更新できます。しかし、これは本番環境のワークロードには適していません。 技術的な詳細については、このブログ記事の後半でご説明します。

開始方法
Amazon Linux 2023 の開始方法は、他の Linux ディストリビューションと何ら変わりはありません。EC2 run-instances API、AWS コマンドラインインターフェイス (AWS CLI)、または AWS マネジメントコンソール、および当社が提供する 4 つの Amazon Linux 2023 AMI のいずれかを使用できます。2 つのマシンアーキテクチャ (x86_64 および Arm) と 2 つのサイズ (標準および最小) をサポートしています。最小 AMI には、OS を起動するための最も基本的なツールとユーティリティが含まれています。標準バージョンは、極めて一般的に使用されるアプリケーションとツールがインストールされた状態で提供されます。

特定のリージョンの最新の AMI ID を取得するために、AWS Systems Manager get-parameter API を使用して /aws/service/ami-amazon-linux-latest/<alias> パラメータをクエリできます。

<alias> を、使用可能な 4 つのエイリアスのいずれかに置き換えてください。

  • arm64 アーキテクチャ (標準 AMI): al2023-ami-kernel-default-arm64
  • arm64 アーキテクチャ (最小 AMI): al2023-ami-minimal-kernel-default-arm64
  • x86_64 アーキテクチャ (標準 AMI): al2023-ami-kernel-default-x86_64
  • x86_64 アーキテクチャ (最小 AMI): al2023-ami-minimal-kernel-default-x86_64

例えば、最新の Arm64 フルディストリビューション AMI ID を検索するには、ターミナルを開いて次のように入力します。

~ aws ssm get-parameters --region us-east-2 --names /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64
{
    "Parameters": [
        {
            "Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",
            "Type": "String",
            "Value": "ami-02f9b41a7af31dded",
            "Version": 1,
            "LastModifiedDate": "2023-02-24T22:54:56.940000+01:00",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",
            "DataType": "text"
        }
    ],
    "InvalidParameters": []
}

インスタンスを起動するために、run-instances API を使用します。Systems Manager 解決を使用して、CLI から AMI ID を動的に検索する方法にご注目ください。

➜ aws ec2 run-instances                                                                            \
       --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64  \
       --key-name my_ssh_key_name                                                                   \
       --instance-type c6g.medium                                                                   \
       --region us-east-2 
{
    "Groups": [],
    "Instances": [
        {
          "AmiLaunchIndex": 0,
          "ImageId": "ami-02f9b41a7af31dded",
          "InstanceId": "i-0740fe8e23f903bd2",
          "InstanceType": "c6g.medium",
          "KeyName": "my_ssh_key_name",
          "LaunchTime": "2023-02-28T14:12:34+00:00",

...(redacted for brevity)
}

インスタンスが起動し、関連付けられているセキュリティグループが SSH (TCP 22) 接続を許可している場合、マシンに接続できます。

~ ssh ec2-user@3.145.19.213
Warning: Permanently added '3.145.19.213' (ED25519) to the list of known hosts.
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\       Preview
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Tue Feb 28 14:14:44 2023 from 81.49.148.9
[ec2-user@ip-172-31-9-76 ~]$ uname -a
Linux ip-172-31-9-76.us-east-2.compute.internal 6.1.12-19.43.amzn2023.aarch64 #1 SMP Thu Feb 23 23:37:18 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

Amazon Linux 2023 は Docker イメージとしても配布されています。Amazon Linux 2023 コンテナイメージは、Amazon Linux 2023 AMI に含まれているのと同じソフトウェアコンポーネントから構築されています。コンテナイメージは、どの環境でも Docker ワークロードのベースイメージとして使用できます。EC2 のアプリケーションのために Amazon Linux を使用している場合は、Amazon Linux コンテナイメージを使用してアプリケーションをコンテナ化できます。

これらのイメージは、Amazon Elastic Container Registry (Amazon ECR)Docker Hub から入手できます。Elastic Container Registry から Amazon Linux 2023 を使用して Docker コンテナを起動する簡単なデモを次に示します。

$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Login Succeeded
~ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2023 /bin/bash
Unable to find image 'public.ecr.aws/amazonlinux/amazonlinux:2023' locally
2023: Pulling from amazonlinux/amazonlinux
b4265814d5cf: Pull complete 
Digest: sha256:bbd7a578cff9d2aeaaedf75eb66d99176311b8e3930c0430a22e0a2d6c47d823
Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2023
bash-5.2# uname -a 
Linux 9d5b45e9f895 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
bash-5.2# exit 

Docker Hub からプルする場合、次のコマンドを使用してイメージをプルできます: docker pull amazonlinux:2023

Amazon Linux 2 と比較して、どのような点が主に異なりますか?
Amazon Linux 2023 は、いくつかの点で Amazon Linux 2 と異なります。ドキュメントには、これらの違いの詳細な説明が記載されています。ここでは、dnf とパッケージ管理ポリシーに関する 2 つの違いに注目します。

AL2023 には、Fedora の dnf (yum の後継) が付属します。しかし、ご心配には及びません。dnf は、パッケージを検索、インストール、削除するために、yum に似たコマンドを提供します。これまで yum list コマンドや yum install httpd コマンドを実行していた場面で、dnf list または dnf install httpd を実行できるようになりました。便宜のために、/usr/bin/yum 用の symlink が作成されているため、スクリプトを変更せずに実行できます。

$ which yum
/usr/bin/yum
$ ls -al /usr/bin/yum
lrwxrwxrwx.1 root root 5 Jun 19 18:06 /usr/bin/yum -> dnf-3

私の見解では、最大の違いは、バージョニングされたリポジトリを通じた決定論的更新です。デフォルトでは、ソフトウェアリポジトリは AMI バージョンにロックされています。これは、dnf update コマンドを実行しても、インストールする新しいパッケージは返されないことを意味します。バージョニングされたリポジトリにより、同じ AMI ID から起動されるすべてのマシンが同一であることが保証されます。インフラストラクチャがベースラインから逸脱することはありません。

$ sudo dnf update 
Last metadata expiration check: 0:14:10 ago on Tue Feb 28 14:12:50 2023.
Dependencies resolved.
Nothing to do.
Complete!

そうですね。しかし、マシンを更新したい場合はどうすればよいでしょうか? 既存のマシンを更新するには 2 つのオプションがあります。本番環境にとって最もクリーンなのは、新しい AMI に基づいて重複したインフラストラクチャを作成することです。前述のとおり、最初のリリースから 2 年間、すべてのセキュリティ修正のアップデートと統合アップデートが 3 か月ごとに発行されます。各アップデートは、一連の AMI とそれらに対応するソフトウェアリポジトリとして提供されます。

テストマシンや開発マシンなどの小規模なインフラストラクチャの場合は、オペレーティングシステムまたは個々のパッケージをインプレースで更新することもできます。これは、次の 3 段階のプロセスで実行します。

  • まず、利用可能な更新済みソフトウェアリポジトリを一覧表示します。
  • 次に、dnf が特定のソフトウェアリポジトリをポイントするようにします。
  • そして 3 番目に、パッケージを更新します。

その仕組みをご覧いただくため、私はあえて 2023 年 2 月の Amazon Linux 2023 の「古い」バージョンを使用して EC2 インスタンスを起動しました。最初に dnf check-release-update を実行して、利用可能な更新済みソフトウェアリポジトリを一覧表示します。

$ dnf check-release-update
WARNING:
  A newer release of "Amazon Linux" is available.

  Available Versions:

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

      dnf upgrade --releasever=2023.0.20230308

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

その後、dnf upgrade --releasever=2023.0.20230308 を使用してディストリビューション全体を更新するか、または dnf が更新済みリポジトリをポイントするようにして個々のパッケージを選択します。

$ dnf check-update --releasever=2023.0.20230308

Amazon Linux 2023 repository                                                    28 MB/s |  11 MB     00:00
Amazon Linux 2023 Kernel Livepatch repository                                  1.2 kB/s | 243  B     00:00

amazon-linux-repo-s3.noarch                          2023.0.20230308-0.amzn2023                amazonlinux
binutils.aarch64                                     2.39-6.amzn2023.0.5                       amazonlinux
ca-certificates.noarch                               2023.2.60-1.0.amzn2023.0.1                amazonlinux
(redacted for brevity)
util-linux-core.aarch64 2.37.4-1.amzn2022.0.1 amazonlinux

最後に、dnf update <package_name> コマンドを実行して特定のパッケージを更新することもできます。

これは単純なマシンではやり過ぎに見えるかもしれませんが、エンタープライズインフラストラクチャや大規模なインスタンスフリートを管理する場合、すべてのインスタンスで同じバージョンのソフトウェアパッケージが実行されるようにすることで、フリートの管理が容易になります。このことは、デプロイのために CI/CD パイプラインを通じて AMI ID を完全に実行できるようになったこと、およびスケジュールに合わせて AMI のバージョンを前後に変更できることも意味します。

Fedora がある場所
Amazon Linux 2023 の出発点となるベースを探している中で、Fedora が最良の選択でした。Fedora の核となる信条 (自由、友人、機能、ファースト) が、Amazon Linux についての当社のビジョンとよく共鳴することがわかりました。ただし、Amazon Linux は、クラウド向けの長期にわたる安定した OS に重点を置いています。これは Fedora とは明らかに異なるリリースサイクルとライフサイクルです。Amazon Linux 2023 では、オープンソースソフトウェアの更新バージョン、さまざまなパッケージ、および頻繁なリリースが提供されています。

Amazon Linux 2023 を、特定の Fedora リリースと直接比較することはできません。Amazon Linux 2023 の GA バージョンには、Fedora 34、35、36 のコンポーネントが含まれています。一部のコンポーネントは Fedora のコンポーネントと同じで、一部は変更されています。他のコンポーネントは、CentOS Stream 9 のコンポーネントにより良く似ているか、または独自に開発されたものです。Amazon Linux カーネル自体は kernel.org の長期サポートオプションから提供されており、Fedora が提供するカーネルとは別に選択されています。

オープンソースコミュニティのすべての善良なユーザーと同じように、当社はコミュニティ全体の利益のために、自らの変更を上流のディストリビューションやソースに還元し、貢献しています。Amazon Linux 2023 自体はオープンソースです。当社が提供するバイナリの構築に使用されるすべての RPM パッケージ向けのソースコードは、SRPM yum リポジトリを通じて入手できます (sudo dnf install -y 'dnf-command(download)' && dnf download --source bash)

もう 1 つ: Amazon EBS gp3 ボリューム
Amazon Linux 2023 AMI は、デフォルトで gp3 ボリュームを使用します。

gp3 は、Amazon Elastic Block Store (Amazon EBS) 用の最新世代の汎用ソリッドステートドライブ (SSD) ボリュームです。gp3 は、gp2 と比較して 20% 低いストレージコストを提供します。gp3 ボリュームは、どのボリュームサイズでも 3,000 IOPS および 125 MB/秒のベースラインパフォーマンスを実現します。gp3 ボリュームについて私が特に好ましく感じているのは、キャパシティにかかわらず、パフォーマンスをプロビジョニングできるようになったことです。gp3 ボリュームを使用することで、実際には必要のない余分なキャパシティについての料金を負担することなく、IOPS とスループットを向上させることができるようになりました。

gp3 を利用する AL2023 AMI が利用可能になったことに伴って、gp3 を利用する Amazon Linux AMI が初めて利用可能になりました。2020 年の gp3 のリリース以降、お客様からは、gp3 を利用する AMI を求める声が多く寄せられていました。今後は、デフォルトでご利用いただけるようになりました。

料金と利用可能なリージョン
Amazon Linux 2023 は追加料金なしで提供されます。EC2 インスタンスや他のサービスの実行には、Amazon EC2 と AWS の標準料金が適用されます。このディストリビューションには、5 年間のフルサポートが含まれています。AWS でデプロイする場合、当社のサポートエンジニアがお客様の AWS サポートプランの契約条件に従って技術サポートを提供します。AMI はすべての AWS リージョンでご利用いただけます。

Amazon Linux は AWS で最も利用されている Linux ディストリビューションであり、Amazon Linux 2 は何十万ものお客様にご利用いただいています。現在、多数の独立系ソフトウェアベンダー (ISV) とハードウェアパートナーが Amazon Linux 2023 をサポートしています。この新しいバージョンを採用する際に、信頼しているパートナーツールが高い可能性でサポートされるという確信を持つことができます。このリリースにより、さらに高いレベルのセキュリティ、予測可能なリリースライフサイクル、一貫した更新エクスペリエンスを実現できます。

今すぐワークロードを構築して Amazon Linux 2023 でデプロイしましょう。

— seb

原文はこちらです。