亚马逊AWS官方博客

Amazon Linux 2023,云优化的 Linux 发行版,提供长期支持



我很高兴地宣布 Amazon Linux 2023(AL2023)正式发布。自 2010 年以来,AWS 一直为您提供云优化 Linux 发行版。这是我们的第三代 Amazon Linux 发行版。

每一代 Amazon Linux 发行版都是安全的,针对云进行了优化,并获得了 AWS 的长期支持。我们基于这些原则构建了 Amazon Linux 2023,而且更进一步。在 Amazon Linux 2023 上部署工作负载可为您带来三大好处:高安全标准、可预测的生命周期和一致的更新体验。

我们首先看看安全性。Amazon Linux 2023 包含预先配置的安全策略,可让您轻松实施常见的行业准则。您可以在启动时或运行时配置这些策略。

例如,您可以将系统加密策略配置为强制在系统范围内使用一组特定的密码套件、TLS 版本或证书和密钥交换中可接受的参数。此外,Linux 内核默认启用了许多强化功能。

Amazon Linux 2023 可让您轻松规划和管理操作系统生命周期。新的 Amazon Linux 主要版本每两年发布一次。主要发行版本包括新功能以及对整个堆栈的安全性和性能的改进。这些改进可能包括对内核、工具链、GLib C、OpenSSL 以及任何其他系统库和实用程序的重大更改。

在这两年中,主要发行版本每三个月会更新一次。这些更新包括安全更新、错误修复以及新功能和软件包。每个次要版本都进行了一系列更新,除了新功能和软件包外,还包括安全更新和错误修复。这些发行版本可能包括最新的语言运行时,例如 Python 或 Java。它们还可能包括其他流行软件包,例如 Ansible 和 Docker。除了这些季度更新外,安全更新一经发布就会提供。

包括 2023 年版本在内的每个主要版本,都会获得五年的长期支持。在两年初始期限结束后,每个主要版本都将进入三年的维护期。在维护期间,安全错误修复和补丁一经发布就会继续提供。这种支持承诺让您能够更稳定地管理生命周期长的项目。

下图说明了 Amazon Linux 发行版的生命周期:

最后,这是迄今为止我最喜欢的策略,Amazon Linux 通过受版本控制的存储库为您提供确定性更新,这种更新机制具有灵活性和一致性。该发行版可锁定到特定版本的 Amazon Linux 软件包存储库,让您能够控制接纳更新的方式和时间。默认情况下,与 Amazon Linux 2 形成鲜明对比的是,dnf 更新命令不会更新您安装的软件包(dnfyum 的后继产品)。这有助于确保您在整个实例集中使用相同版本的软件包。所有从亚马逊云机器镜像(AMI)启动的 Amazon Elastic Compute Cloud(Amazon EC2)实例都将具有相同版本的软件包。确定性更新还促进了不可变基础设施的使用,即部署后不会更新任何基础设施。必要时,您可以更新基础设施即代码脚本并重新部署新的基础设施。当然,如果您确实想更新发行版,可以将 dnf 指向更新的软件包存储库,然后像今天一样更新您的机器。但我是否告诉过您这对生产工作负载来说不是一种好做法? 我稍后会在这篇博客文章中分享更多技术详情。

如何开始使用
Amazon Linux 2023 入门与其他 Linux 发行版入门没有区别。您可以使用 EC2 run-instances API、AWS 命令行界面(AWS CLI)AWS 管理控制台,以及我们提供的四个 Amazon Linux 2023 AMI 之一。我们支持两种机器架构(x86_64 和 Arm)和两种大小(标准和最小)。最小的 AMI 包含启动操作系统的最基本工具和实用程序。标准版本安装了最常用的应用程序和工具。

要检索特定区域的最新 AMI ID,您可以使用 AWS Systems Manager get-parameter API 并查询 /aws/service/ami-amazon-linux-latest/<alias> 参数。

请务必将 <alias> 替换为下面提供的四个别名之一:

  • 适用于 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

我们还以 Docker 映像的形式发行 Amazon Linux 2023。Amazon Linux 2023 容器映像由 Amazon Linux 2023 AMI 中包含的相同软件组件所构建。容器映像可在任何环境中用作 Docker 工作负载的基础映像。如果您将 Amazon Linux 用于 EC2 中的应用程序,则可以使用 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 2 相比,Amazon Linux 2023 有一些区别。该文档详细说明了这些区别。我想重点介绍的两点区别是 dnf 和软件包管理策略。

AL2023 提供 Fedora 的 dnf,即 yum 的后继产品。但不用担心,dnf 提供类似 yum 的命令,可用来搜索、安装或删除软件包。在以前运行 yum listyum install httpd 命令的情况中,您现在可以运行 dnf listdnf install httpd。为方便起见,我们为 /usr/bin/yum 创建了一个符号链接,这样您就可以运行未修改的脚本。

$ 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!

是的,但是如果您想更新某台机器怎么办? 有两种方法可以更新现有机器。对您的生产环境而言,最简单的方法是基于新 AMI 创建重复的基础设施。正如我前面提到,我们会针对每个安全修复发布更新,并在首次发布后的两年内每三个月发布一次整体更新。每次更新都会提供一组 AMI 及其相应的软件存储库。

对于较小的基础设施,例如测试机器或开发机器,您也可以选择更新操作系统或现有的单个软件包。此过程共有三步:

  • 第一步,列出可用的更新版软件存储库;
  • 第二步,将 dnf 指向特定的软件存储库;
  • 第三步,更新您的软件包。

为了向您展示其工作原理,我特意推出了一个带有自 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> 命令来更新特定的包。

对于简单的设备来说,这可能看起来是多余的,但在管理企业基础设施或大规模实例集时,这一操作能通过确保所有实例运行相同版本的软件包来帮助管理实例集。这也意味着 AMI ID 现在可以完全通过 CI/CD 管道运行以进行部署,并且您可以根据自己的计划向前和向后滚动 AMI 版本。

Fedora 在哪?
在寻找可以作为 Amazon Linux 2023 起点的基础时,Fedora 是最佳选择。我们发现 Fedora 的核心宗旨(自由、友好、功能、领先)与我们对 Amazon Linux 的愿景产生了良好的共鸣。但是,Amazon Linux 专注于长期稳定的云操作系统,这与 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

还有一件事:Amazon EBS Gp3 卷
Amazon Linux 2023 AMI 默认使用 gp3 卷。

Gp3 是适用于 Amazon Elastic Block Store(Amazon EBS)的新一代通用固态硬盘(SSD)卷。与 gp2 相比,gp3 的存储成本降低了 20%。在任何卷大小下,Gp3 卷均可提供 3000 IOPS 和 125MB/s 的基准性能。我特别喜欢 gp3 卷的地方是,我现在可以独立于容量来预置性能。现在使用 gp3 卷时,我可以提高 IOPS 和吞吐量,而无需为实际不需要的额外容量付费。

随着由 gp3 提供支持的 AL2023 AMI 的推出,这是由 gp3 提供支持的 Amazon Linux AMI 的首次面世。自 2020 年 gp3 推出以来,由 gp3 提供支持的 AMI 已经成为客户的普遍要求。它现在默认可用。

价格和可用性
Amazon Linux 2023 是免费提供的。标准 Amazon EC2 和 AWS 收费适用于运行 EC2 实例和其他服务。该发行版包括五年的全面支持。在 AWS 上部署时,我们的支持工程师将根据您的 AWS Support 计划的条款和条件提供技术支持。AMI 在所有 AWS 区域均可用。

Amazon Linux 是 AWS 上最常用的 Linux 发行版,有数十万的客户在使用 Amazon Linux 2。如今,数十家独立软件供应商(ISV)和硬件合作伙伴都支持 Amazon Linux 2023。您可以放心采用此新版本,因为您所依赖的合作伙伴工具可能会得到支持。我们对此发行版本感到兴奋,它为您带来了更高的安全性、可预测的发布生命周期和一致的更新体验。

现在,立即在 Amazon Linux 2023 上构建和部署您的工作负载

— seb